MATLAB错误 - ???尝试去引用非结构数组字段

时间:2010-09-20 16:08:17

标签: matlab sorting insertion-sort

我正在MATLAB中编写插入排序。我这样调用了我的函数:

>> A = [5 4 3 2 1]

A =

     5     4     3     2     1

>> insertion_sort(A)

但是当我运行它时我得到了错误

??? Attempt to reference field of non-structure array.

    Error in ==> insertion_sort at 6
        for j=2:original.length

这是我的原始代码:

function sorted = insertion_sort(original)

    for j=2:original.length
        key = original(j);
        i = j-1;
        while i > 0 && original(i) > key
            original(i+1) = original(i);
            i = i-1;
        end
        original(i+1) = key;
    end 

sorted = original;

end

任何人都知道我做错了什么?

2 个答案:

答案 0 :(得分:3)

尝试使用numel(original)代替original.length。 MatLab矩阵是原始类型,而不是对象,并且它们没有长度属性。

答案 1 :(得分:1)

您想使用numel(original)代替original.lengthFundamental data types没有length方法,因此MATLAB错误地认为您正在尝试访问structure中名为length的字段,original不是