我有一个&#34;对象&#34;结构<algorithm>
,我必须经常转换为对象结构的每个元素的单个数组。这可以使用OBJECT_ARRAY
完成。这比单纯裁判arrayfun
更乏味,但这就是The Mathworks选择这样做的原因。
在今天的这种情况下,我已经使用了那些单独的数组并为每个元素计算了相应的派生值OBJECT_ARRAY(k).item1
,我需要将其添加到原始结构数组中。所以我有一个newItem
数组。
是否有一种直接的方式为newItems
中的每个对象执行分配,以便(有效地)OBJECT_ARRAY
为每个索引OBJECT_ARRAY(k).newItem = newItems(k)
?
我使用的是2015a版。
答案 0 :(得分:5)
你不应该arrayfun
任何一个。
要获取值,您可以简单地依赖于非标量struct
或对象的点索引产生comma-separated list这一事实。如果我们用[]
包围它,它会将所有值水平连接成一个数组。
array_of_values = [OBJECT_ARRAY.item1];
或者如果它们都是不能连接的大小,请使用单元格数组
array_of_values = {OBJECT_ARRAY.item1};
要执行分配,您可以再次使用分配左侧和右侧的逗号分隔列表。我们首先将新值粘贴到单元格数组中,以便我们可以使用{:}
自动将它们转换为以逗号分隔的列表。
items = num2cell(newitems);
[OBJECT_ARRAY.item1] = items{:};