2011-02-18 119 views
6

a= struct('a1',{1,2,3},'a2',{4,5,6})訪問結構數據(matlab)

怎樣才能得到1的值;

我嘗試使用a.a1 {1},它返回錯誤

>> a.a1{1} 
??? Field reference for multiple structure elements that is followed by more reference blocks is an 
error. 

我如何才能獲得1?謝謝。

編輯 A = struct{'a1',[1 2 3],'a2',[4 5 6]}

我怎樣才能訪問1.我用A(1).a1但我得到1 2 3

回答

13

你必須這樣做,而不是:

a(1).a1 

的原因是因爲在用於創建結構的代碼實際上會創建一個3元素結構數組,其中第一個數組元素包含a1: 1a2: 4,第二數組元素包含a1: 2a2: 5,第三數組元素包含a1: 3a2: 6

當您使用大括號{}STRUCT呼叫像你這樣,MATLAB假定你是想創建您整個結構數組元素分配單元的內容的結構數組。如果您不是要創建一個1×1的結構元素,其中字段包含電池陣列,你必須添加一個額外的大括號的包圍你的電池陣列,像這樣:

a = struct('a1',{{1,2,3}},'a2',{{4,5,6}}); 

然後你原來的a.a1{1}將工作。

編輯:

如果您在使用數字數組來代替電池陣列,像這樣創建您的結構:

A = struct('a1',[1 2 3],'a2',[4 5 6]); 

然後你就可以按如下方式訪問值1:

A.a1(1) 

有關在MATLAB中使用結構的更多信息,請查看this documentation page