首页 > 解决方案 > 如何从单元格数组中复制列以创建另一个单元格数组?

问题描述

我有一个 1 x 4 单元阵列(1 行 4 列)。该元胞数组的每一列都包含一个 4 x 4 矩阵。我只想复制每 4 x 4 矩阵的第 4 列的第一、第二和第三行,并创建另一个 3 x 1 的 1 x 4 单元格数组(复制了 3 行和 1 列元素)。我想知道这样做的有效方法是什么?

for i=1:1:number_links
    for j=1:1:3
          O{1,i}(j,4)=T{1,i}(j,4);
   end
end

标签: arraysmatlab

解决方案


邦华给出了一个很好的解决方案。但是可以使用隐藏循环cellfun。我不确定它是否真的比普通的旧循环更干净,但很高兴了解这些可能性:

O = cellfun(@(x)x(1:3,4),T,'UniformOutput',false);

这里我们使用了一个匿名函数@(x)x(1:3,4),它应用于每个元素T{1,i}。也就是说O{1,i} = T{1,i}(1:3,4),就像邦华的回答一样。


推荐阅读