如何在 Matlab 中将一维字符数组从 CSV 转换为二维元胞数组

How to convert 1d array of chars from CSV to 2d cell array in Matlab

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

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

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

答案出奇的简单:

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

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

现在您有了行,您需要创建列,这与创建行的方式相同,只是使用 , 作为分隔符,在本例中为 , (逗号后跟 space)。

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'}