首页 > 解决方案 > 如何在 Matlab 中将一维字符数组从 CSV 转换为二维元胞数组

问题描述

我有一个无法在 Matlab 中更改的函数,它将 CSV 文件转换为一维字符数组。

这是它的外观示例: array_o_chars = ['1' 'd' ',' ' ' 'a' 'r' 'r' 'a' 'y' '\n' 'o' 'f' ',' ' ' 'c' 'h' 'a' 'r' 's'];

对于我的其余代码,我需要将其转换为二维“单元”数组,我该怎么做?

标签: matlabcsvcell-array

解决方案


答案出奇的简单:

首先,您要将 char 数组分解为 CSV 文件的“行”。根据您的行尾,您将选择其中一个作为分隔符:\n、、\r或两者的组合。对于此示例,我们使用\n.

rows = split(array_o_chars, '\n');

现在您有了行,您需要创建列,这与您的行以相同的方式完成,除了,用作分隔符,或者在这种情况下, (逗号后跟空格)。

cell_array = split(rows, ', ');

现在你有了你想要的二维单元阵列。

现在都在一起了:

% Test 1d array
array_o_chars = ['1' 'd' ',' ' ' 'a' 'r' 'r' 'a' 'y' '\n' 'o' 'f' ',' ' ' 'c' 'h' 'a' 'r' 's'];

% Conversion to cell array
rows = split(array_o_chars, '\n');
cell_array = split(rows, ', ');

% Show result in Command Window
display(cell_array);

Matlab 的输出:

cell_array =

  2×2 cell array

    {'1d'}    {'array'}
    {'of'}    {'chars'}

推荐阅读