Matlab中元胞数组的列操作问题:删除特定列与不通过合并提取指定列
Matlab中元胞数组的列操作问题:删除特定列与不通过合并提取指定列
嘿,我来帮你搞定这个Matlab元胞数组的列提取问题!你提到不想通过分步合并的方式来提取第1、2、8列,其实完全可以一步到位直接索引,先给你理清楚两种实现方式~
首先先看你给出的原始元胞数组定义:
ca = {'Col1','Col2','Col3','Col4','Col5','Col6','Col7','Col8','Col9'; '1', 70 , 80 , 100, 99, 99, 95, 95, 95; '2', 30 , 90, 95, 90, 95, 99, 95, 95; '3', 100, 70, 85, 90, 95, 99, 95, 95; '4', 100, 70, 85, 90, 95, 99, 95, 95; '5', 100, 70, 85, 90, 95, 99, 95, 95; '6', 100, 70, 85, 90, 95, 99, 95, 95; }
你当前的实现方式是拆分再合并:
partA = ca(:, 1:2) % 提取第1-2列 partB = ca(:, 8) % 提取第8列 newca = [partA,partB] % 合并成新的元胞数组
这种方法完全没问题,能准确得到你想要的结果,但确实多了两步拆分合并的操作。
如果想不通过合并一步到位,其实Matlab的索引支持直接指定列的集合,只需要把你要的列索引放在一个数组里就好:
newca = ca(:, [1, 2, 8])
这样一行代码就直接提取了第1、2、8列,得到的结果和你分步合并的完全一样,而且写法更简洁高效,也不需要额外定义中间变量~
简单说,Matlab里对元胞数组(其实数值数组也一样)的列操作,直接通过列索引的集合来选择,是最直接的方式——你要哪几列,就把列号放进方括号里作为索引,比拆分合并要省事多啦。
备注:内容来源于stack exchange,提问作者dkin
相关产品推荐
相关产品推荐

