2010-09-20 6 views
2

Я пишу сортировку в MATLAB. Я назвал свою функцию:Ошибка 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 

Каждый знает, что я делаю неправильно ?

ответ

3

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

1

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

 Смежные вопросы

  • Нет связанных вопросов^_^