假设有一个使用以下结构值初始化的单元数组。
% Phone book
phone_record{1} = struct('name', 'Bob', 'phone', '1233323');
phone_record{2} = struct('name', 'Mike', 'phone', '3245524');
% How to make such or similar one-liner work?
% phonebook(:) = phone_record{:}
% Expected:
% phonebook(1).name = 'Bob';
% phonebook(1).phone= '1233323';
% phonebook(2).name = 'Mike';
% phonebook(2).phone = '3245524';
是否确实可以使用 cell2struct 或for循环索引来完成此操作? 可以使用交易或类似的吗?
注意:如果您不知道解决方案,请备用“最佳实践”暗示或类似的“挥手”。
答案 0 :(得分:8)
您可以使用cell2mat
:
cell2mat(phone_record)
和=
1x2 struct array with fields:
name
phone
答案 1 :(得分:1)
那么,
phone_book = cat( 2, phone_record{ :})
确实使用了冒号运算符,并且会给出与cell2mat(phone_record)相同的结果。
另一种非结肠解决方案是
cellfun(@(x) x, phone_record).'
具有动态转换结构的好处,例如添加(缺少)字段。在这里,我们当然使用了理想。