2016-10-03 64 views
0

訪問矢量我有一個名爲MATLAB - 從結構

Fruitbasket=struct('apples',{[1] [2] [3] [4]},'bananas',[],'berries',[],'melons',[]) 

我不知道如何在矢量形式得到Fruitbaskets.apples 1×4結構(例如,[1 2 3 4])。

我所得到的Fruitbaskets.applesans=1;ans=2;ans=3;ans=4

回答

1

編輯:它看起來像你想有一個結構數組。醒目這個值的一個非常簡單的解決方案顯然循環:

for ii=1:size(Fruitbasket,2) 
    app(ii)=Fruitbasket(ii).apples; % or getfield(Fruitbasket(ii),'apples'); 
end 

那是因爲你正在創建結構的數組,而不是使用數組的結構!

Fruitbasket=struct('apples',{[1] [2] [3] [4]},...) 

創建4個Fruitbaskets,每個Fruitbaskets都有一個數字。你可以通過做Fruitbasket(2).apples來驗證。如果您希望​​字段有一個數組,請不要將其定義爲cell array總線作爲vector。單元陣列用{}[]確定。以下將創建一個帶有向量的結構體​​:

Fruitbasket=struct('apples',[1 2 3 4],'bananas',[],'berries',[],'melons',[]) 
+0

實際上對不起我的錯。我忘了提及,我有4個fruitbaskets。我仍然想要以 – Agnel

+0

的矢量形式獲得Fruitbaskets.apples,那是行得通的。如果它是[A] [B] [C] [D]而不是[1] [2] [3] [4] ...錯誤:'從char轉換到單元格是不可能的。我嘗試過mat2cell但是不知道 – Agnel

+0

@Agnel什麼是'A'?你的意思是'A'作爲一個字符串? –