2

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

私が間違っていることを知っている人はいますか?

4

2 に答える 2

3

numel(original)の代わりに試してくださいoriginal.length。MatLab 行列はオブジェクトではなくプリミティブ型であり、長さのプロパティはありません。

于 2010-09-20T16:15:46.507 に答える
1

numel(original)の代わりに使用したいoriginal.length基本的なデータ型にはメソッドがないため、MATLAB は構造体で名前が付けられたlengthフィールドにアクセスしようとしていると誤って判断しますが、そうではありません。lengthoriginal

于 2010-09-20T16:15:33.137 に答える