标签: matlab cell-array
我想问一个关于单元格数组的问题。假设我有一个单元阵列 C={[2 1], [3 5], [15 6]}; 我希望获得每个细胞的所有第一个值,即[2,3,15] 但是,当我打字时 C{:}(1); 或 C(:)(1); 会有一些错误。 那么获得这些数字的简单方法是什么呢。
C={[2 1], [3 5], [15 6]};
C{:}(1);
C(:)(1);
答案 0 :(得分:4)
如果每个单元格都是一个向量而具有相同数量的元素,则一种方法是通过将所有这些单元格堆叠在一起来创建矩阵并提取出第一列。使用vertcat来帮助您:
vertcat
CMat = vertcat(C{:}); out = CMat(:,1);
如果每个单元格不具有相同数量的元素,则一种方法是使用cellfun。使用匿名函数提取每个单元格数组的第一个元素:
cellfun
out = cellfun(@(x) x(1), C);
上述方法的好处是每个细胞是否是载体或基质无关紧要。它将提取矢量的第一个元素或矩阵的左上角。