MATLAB ошибка - ???Попытка ссылки на поле неструктурного массива - PullRequest
2 голосов
/ 20 сентября 2010

Я пишу вставку сортировки в 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 ]

3 голосов
/ 20 сентября 2010

Попробуйте numel(original) вместо original.length. Матрицы MatLab являются примитивными типами, а не объектами, и у них нет свойства длины.

1 голос
/ 20 сентября 2010

Вы хотите использовать numel(original) вместо original.length. Основные типы данных не имеют метода length, поэтому MATLAB по ошибке считает, что вы пытаетесь получить доступ к полю с именем length в структуре , которой original не является .

...