如何从MATLAB单元格数组(cell-array)提取单行生成独立单元格数组
提取单元格数组每行作为独立单元格数组的方法
你给出的示例单元格数组定义如下:
C = [ {{1 2 3} true 0 0 5 false}; ... {{2 3 4} true 0 0 3 false} ... ]
方法一:直接提取指定行
如果只需要单独提取某一行(比如第一行),直接通过行索引赋值即可:
C1 = C(1, :);
执行后C1就是目标的1×6单元格数组:{{1 2 3} true 0 0 5 false}。
方法二:批量生成所有行的独立变量
如果要把所有行都转为独立变量,可用循环结合assignin实现:
for i = 1:size(C, 1) varName = ['C', num2str(i)]; assignin('base', varName, C(i, :)); end
运行后工作区会自动生成C1、C2等变量,分别对应原数组的每一行。
额外建议
批量生成变量会降低代码可读性,后续维护不便。更推荐直接通过原数组的索引访问行数据(比如C(2,:)直接取第二行),或者将所有行存入一个新的单元格数组统一管理:
rowCells = mat2cell(C, ones(size(C,1),1), size(C,2));
此时rowCells{1}就是第一行数据,rowCells{2}是第二行,以此类推。
内容的提问来源于stack exchange,提问作者Xoriun
相关产品推荐
相关产品推荐

