如何在Matlab中从cell array提取第一列生成子cell array?
如何从Matlab的Cell数组中提取第一列生成子Cell数组?
嘿,我完全懂你碰到的这个小坑——想提取cell数组的第一列做成新的cell数组,结果只拿到了第一个元素对吧?我之前刚学Matlab的时候也犯过同样的错,给你两个简单又靠谱的解决办法:
方法一:用圆括号索引直接提取整列
这是最直接的方式,关键是要用上**冒号:**来表示“所有行”,再指定第一列。假设你的原cell数组叫myCell,只需要一行代码:
firstColumnCell = myCell(:, 1);
举个具体例子,比如你的原cell数组是这样的:
myCell = {'apple', 10; 'banana', 20; 'cherry', 30};
执行上面的代码后,firstColumnCell就是一个3×1的cell数组:
{'apple'; 'banana'; 'cherry'}
为啥之前只拿到单个值?
如果你之前写的是myCell(1,1)或者myCell(1),那只会提取第一行第一列的单个cell元素;而(:,1)表示选中所有行的第一列,得到的就是完整的列cell数组啦。
方法二:处理特殊情况(如果需要从内容列表转cell)
如果你的场景是先用花括号{}取出了第一列的内容(比如得到一个逗号分隔的元素列表),也可以把这些内容重新打包成cell数组:
firstColumnContent = myCell{:, 1}; % 得到元素列表:'apple', 'banana', 'cherry' firstColumnCell = num2cell(firstColumnContent); % 如果是数值类型 % 或者如果是字符串/字符数组 firstColumnCell = cellstr(firstColumnContent);
不过这种方法不如第一种直接,优先用方法一就好~
内容的提问来源于stack exchange,提问作者Cedric Zoppolo
相关产品推荐
相关产品推荐

