2014-12-03 4 views
1

Я пытаюсь выполнить очень основное задание в Matlab для создания массива структур.
Вот основной код для присвоения егоMATLAB: Подзаголовок между разнородными структурами

for i=1:n 
    P(i) = MakePoint(x(i), y(i), z(i)); 
end 

Если функция MakePoint является

function P = MakePoint(x,y,z) 
    % P is a point with x-coordinate P.x and y-coordinate P.y. 
     P = struct('x',x,'y',y,'z',z) 
    end 

Другими словами, я пытаюсь сделать P и массив «точек» создает с MakePoint. Я получаю ошибку

назначение индексируются между разнородными структурами

Как это исправить? Спасибо!

+0

Вы не можете поместить 'struct' внутри массива. Вы можете сделать 'P' массив ячеек:' P {i} = MakePoint (x (i), y (i), z (i)) '. – David

+1

@ Давид, это неверно. вы можете иметь массив структур. единственным ограничением является то, что все элементы массива структуры имеют одинаковые имена полей в одном и том же порядке. – Shai

+1

Каково значение 'P' перед циклом? – Shai

ответ

0

Непонятно, почему ваш код дает эту ошибку.

Тем не менее, лучше способ установить массив структур использует аргументы клеточного массива:

P = struct('x', mat2cell(x), 'y', mat2cell(y), 'z', mat2cell(z)); 

и не требуется цикл.

Вы можете попробовать: here.