2017-05-04 218 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 
相關問題