Matlab:如何使用冒号运算符将结构的单元数组转换为结构数组?

时间:2012-02-07 22:12:22

标签: matlab

假设有一个使用以下结构值初始化的单元数组。

% 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循环索引来完成此操作? 可以使用交易或类似的吗?

注意:如果您不知道解决方案,请备用“最佳实践”暗示或类似的“挥手”。

2 个答案:

答案 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).'

具有动态转换结构的好处,例如添加(缺少)字段。在这里,我们当然使用了理想。