如何用Matlab拆分单元格双值并读取为(2,2,2)矩阵?
在Matlab中拆分单元格值生成三维矩阵
当然不用提前修改电子表格啦!完全可以在Matlab里直接处理这些带逗号的单元格值,转换成你需要的三维矩阵。下面是具体的实现步骤:
首先读取原始文本数据:使用
xlsread的第三个输出参数获取原始单元格数组,确保保留所有带逗号的文本内容[~, ~, raw] = xlsread('你的文件路径.xlsx');这里的
raw就是包含所有单元格原始内容的二维单元格数组。批量拆分每个单元格的逗号分隔值:借助
cellfun和strsplit函数,把每个单元格里的字符串按逗号拆分成两个子字符串split_cells = cellfun(@(x) strsplit(x, ','), raw, 'UniformOutput', false);执行后,
split_cells里的每个元素都是包含两个字符串的小单元格数组。转换为数值并重组为三维矩阵:先把字符串转成数值,再通过
cat函数把两部分数值在第三维度拼接起来% 把每个拆分后的字符串转换成数值 num_cells = cellfun(@str2double, split_cells, 'UniformOutput', false); % 提取第一列值组成二维矩阵,提取第二列值组成另一个二维矩阵,再沿第三维度拼接 3D_matrix = cat(3, cell2mat(cellfun(@(x) x(1), num_cells, 'UniformOutput', false)), ... cell2mat(cellfun(@(x) x(2), num_cells, 'UniformOutput', false)));这样得到的
3D_matrix就是你想要的三维矩阵——如果原始是M×N的二维结构,最终就会是M×N×2的三维矩阵,每个位置的两个值对应第三维度的两个层。
举个例子:如果你的原始矩阵是
'2,2' '2,0' '0,2' '1,1'
执行完上面的代码后,3D_matrix(:,:,1)会是
2 2 0 1
3D_matrix(:,:,2)会是
2 0 2 1
内容的提问来源于stack exchange,提问作者Yiannikos
相关产品推荐
相关产品推荐

