如何在Matlab中将CSV导出的1维字符数组转为二维元胞数组
Matlab一维字符数组转二维Cell元胞数组实现方案
实现逻辑
- 先按换行符拆分一维字符数组,得到CSV每一行的内容
- 逐行按逗号拆分字段,去除字段前后冗余空格
- 统一整理为标准二维元胞数组,自动适配不同行的列数差异
可直接运行代码
% 输入为第三方函数输出的一维字符数组,示例如下 array_o_chars = ['1' 'd' ',' ' ' 'a' 'r' 'r' 'a' 'y' '\n' 'o' 'f' ',' ' ' 'c' 'h' 'a' 'r' 's']; % 1. 按换行符拆分得到所有行的字符串数组 row_arr = split(string(array_o_chars), newline); % 2. 逐行拆分字段生成二维元胞 result_cell = {}; max_col = 0; for row_idx = 1:length(row_arr) % 按逗号拆分当前行,去除每个字段前后的空格/制表符等空白 current_cols = strtrim(split(row_arr(row_idx), ',')); col_num = length(current_cols); % 自动扩展列数,避免行长度不一致报错 if col_num > max_col result_cell(:, col_num) = {''}; max_col = col_num; end result_cell(row_idx, 1:col_num) = current_cols; end
运行结果
你提供的示例输入运行后,输出的result_cell为2行2列二维元胞:
第1行:
{'1d', 'array'}
第2行:{'of', 'chars'}
适配说明
- 上述代码默认适配无引号包裹的普通CSV格式,如果你的CSV存在带逗号的引号包裹字段,可在拆分前先增加引号字段识别逻辑
- 不需要自动补全空列的场景,删除列数扩展的代码段即可,会得到每行长度独立的嵌套元胞
内容的提问来源于stack exchange,提问作者mwso
相关产品推荐
相关产品推荐

