我正在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
任何人都知道我做错了什么?
答案 0 :(得分:3)
尝试使用numel(original)
代替original.length
。 MatLab矩阵是原始类型,而不是对象,并且它们没有长度属性。
答案 1 :(得分:1)
您想使用numel(original)
代替original.length
。 Fundamental data types没有length
方法,因此MATLAB错误地认为您正在尝试访问structure中名为length
的字段,original
不是