"指数超过矩阵维度"错误

时间:2014-04-16 22:28:29

标签: matlab

我运行代码"索引超出矩阵维度"出现错误但我不明白为什么。

以下是代码:

function [ p ] = myIsort2(p)
%myIsort2 is based on myIsort but instead of sorting a row vector into 
%increasing order it sorts a structure array into decreasing order

global order

n=length(p);

for i=2:n

    x=p(1,i).exponent;
    y=p(1,i).coeff;
    j=i-1;

    while (j~=0) && order(x,p(1,j).exponent)==1

        %compares the order between 2 row vectors of the exponential field 
        %in order to sort them by making the smallest one come after the
        %largest one

        p(1,j+1).exponent=p(1,j).exponent;
        p(1,j+1).coeff=p(1,j).coeff;
        j=j-1;

    end

    p(1,j+1).exponent=x;
    p(1,j+1).coeff=y;

end

end

感谢。

1 个答案:

答案 0 :(得分:2)

问题可能是访问p,使用p(1,1)将索引从p(1,n)转移到n = length(p)

如果您收到index exceeds matrix dimensions错误,则结论是p的列数少于n。请注意,lengthp最大维度的大小。因此,如果p的行数多于列数,则会显示此错误。

一个例子:

  • 假设p<10x5 double>
  • n = length(p)返回n = 10
  • 但是,p(1,10)会返回Error: index exceeds matrix dimensions,因为p只有5列。

而不是length,使用size来获取所有维度的大小,或使用numel来获取元素的总数。