2013-03-15 58 views
1

我有一個1xN維的單元格陣列包含維度AxB矩陣,其中A> 0和B> 2.我想提取每個矩陣的第二和第三列並創建一個新的單元格 - 包含這些新矩陣的數組。向量化單元陣列元素操作

我知道我能做到這一點:

newcell = cell(size(oldcell)); 
for i = 1:size(oldcell,2) 
    newcell{i} = oldcell{i}(:, [2, 3]); 
endfor 

但如果循環可以通過進一步量化避免我不知道?

回答

1

我想通了。這可以通過cellfun()完成,選項UniformOutput設置爲false(默認值爲true)。

newcell = cellfun(@(x) x(:, [2, 3]), oldcell, 'UniformOutput', false); 

這並不UniformOutput =真工作的原因是,cellfun()然後期望輸出到是標量,其中它們不在這種情況下。