我正试图编写一个程序来计算两个矩阵A
和B
的乘积。
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
开始。此外,循环仅在i
和j
上,不需要像数学公式中那样包括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
文档