试图访问b(1,2);索引越界,因为大小(b)= [3,1]

时间:2015-04-25 07:47:41

标签: matlab

我有一个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非常陌生。

1 个答案:

答案 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列。