MATLAB - 从结构

问题描述:

访问矢量我有一个名为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

编辑:它看起来像你想有一个结构数组。醒目这个值的一个非常简单的解决方案显然循环:

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'作为一个字符串? –