如何在 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'}
我有一个无法在 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'}