为什么这个程序(对于两个矩阵的乘积)不起作用?



我正试图编写一个程序来计算两个矩阵AB的乘积。


function [ C ] = Untitled (A,B);
A = [1,2,3;4,5,6;7,8,9];
B = [1,0,0;0,1,0;0,0,1];
[m,n] = size(A);
[k,l] = size(B);
if (n~=k)
C = [];
disp( 'AB Tulo ei ole määritelty');
return

end
C = zeros(m,1);
for i = 0:m
for j = 0:l
for p = 0:n
flag = 1;
C(i,j) = C(i,j) + A(i,p) * B(p,j);
end
end
end
end

程序不起作用。Matlab告诉我Error in Untitled (line 18)

C(i,j) = C(i,j) + A(i,p) * B(p,j);

这个错误消息是什么意思?。此外,乘积C只是一个[0,0,0]向量,除此之外,运行此脚本会使Matlab进入调试模式。

表的索引必须在1开始,而不是像算法中那样在0开始。此外,循环仅在ij上,不需要像数学公式中那样包括p

代码中的问题在两个层面上都存在。

您的代码有一些更正:

function [ C ] = Untitled (A,B);
A = [1,2,3;4,5,6;7,8,9];
B = [1,0,0;0,1,0;0,0,1];
[m,n] = size(A);
[k,l] = size(B);

if (n~=k)
C = [];
disp( 'AB Tulo ei ole määritelty');
return

end

C = zeros(m,m);
for i = 1:m
for j = 1:l
C(i,j) = C(i,j) + A(i,:)*B(:,j);
end
end
end

mtimes文档

相关内容

最新更新