2014-12-03 51 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 {i} = MakePoint(x(i),y(i),z(i))'來使'P'成爲單元陣列。 – David 2014-12-03 02:26:15

+1

@David,這是不正確的。你可以有一系列的結構。唯一的限制是所有的結構數組元素在相同的順序中具有相同的字段名稱。 – Shai 2014-12-03 06:44:50

+1

循環之前'P'的值是多少? – Shai 2014-12-03 06:49:01

回答

0

不清楚爲什麼你的代碼會給出這個錯誤。

然而,設置結構的數組的一個更好的方法是使用細胞陣列參數:

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

並且不需要循環。您可以試試here