2017-05-04 172 views
0

我试图创建一个具有两元素单元格数组作为值的映射。地图期望键和值具有相同数量的元素。此代码将这些单元格数组打包到一个循环中的单元格中,但我怀疑它可以以某种方式进行简化。示例代码:当创建包含单元格数组的单元格时,避免在matlab中循环使用

cells1={'foo1';'foo2';'foo3'}; 
cells2={'bar1';'bar2';'bar3'}; 
cells3={'baz1';'baz2';'baz3'}; 
values=cell(size(cells1)); 
for ii=1:size(cells1,1) 
    values{ii}={{cells2{ii},cells3{ii}}}; 
end 
keys=cells1; 
containers.Map(keys,values); 

回答

1

可以使用矢量级联和num2cell与第二尺寸参数(如果两次要获得相同的结果):

% your code 
cells1={'foo1';'foo2';'foo3'}; 
cells2={'bar1';'bar2';'bar3'}; 
cells3={'baz1';'baz2';'baz3'}; 
values=cell(size(cells1)); 
for ii=1:size(cells1,1) 
    values{ii}={{cells2{ii},cells3{ii}}}; 
end 
% simplified 
c = num2cell(num2cell([cells2,cells3],2),2); 
% you can also do c = num2cell([cells2,cells3],2); which isn't identical but may be suficcient 
isequal(c,values) % yes 
相关问题