我有一个uni命令来创建一个非常基本的函数,它与MATLAB中的反斜杠命令一样。我没有找到大学的答案,我的意图不是作弊,我只是坚持一个问题,需要指导如何让它发挥作用。
所以我认为我接近答案。
function x = matrix_solve(A,b)
invA=inv(A);
[m,n] = size(A); % m is num rows, n is num of columns
nb = size(b,1);
if m == n && nb == m
x = zeros(m,n);
for i = 1:m
for j = 1:n
x(1,j) = x(1,j)+ invA(i,1)*b(1,j);
end
end
else
error('Error')
end
使用基本方阵
b = [1;3;2]
A = [3,1,2;3,2,1;3,3,3]
我一直收到标题中提到的错误。
我对其他代码非常熟悉,但我对Matlab非常陌生。
答案 0 :(得分:3)
索引超出错误的原因是您正在尝试访问此行不存在的元素
x(1,j) = x(1,j)+ invA(i,1)*b(1,j);
相反它应该是
x(1,j) = x(1,j)+ invA(i,1)*b(j,1);
即。只需将b(1,j)
更改为b(j,1)
即可。 b
是一个大小为3的列向量(size(b)=[3,1]
),您尝试访问第1行第2列的元素,但只有1列。