首页 > 解决方案 > 在MATLAB中将字符串单元格转换为表格列

问题描述

我尝试将向量用作表中的列(在 MATLAB 中)。但是,我总是得到不同的错误。下面是一个可重现的示例,以及收到的错误:

% What I have:
my_table = array2table(NaN(5, 3));
my_table.Properties.VariableNames = {'col_1' 'col_2' 'col_3'};
my_cell = {'a', 'b', 'c', 'd', 'e'};

% What I tried:
my_table.col_3 = my_cell; %Error: To assign to or create a variable in a table, the number of rows must match the height of the table.
my_table.col_3(1:5) = my_cell; %Error: Conversion to double from cell is not possible.
my_table.col_3.Properties.VariableTypes = {'string'}; %Error: Unable to perform assignment because dot indexing is not supported for variables of this type.

我该如何解决这个任务?

标签: arraysmatlabcellvariable-types

解决方案


如果您想保留cell可以使用的类型:

my_table.col_3 = my_cell.'

优点:您可以在每一行中存储多个字符。

为什么my_table.col_3 = my_cell不起作用:

%size(my_table.col_3) = 5x1
%                       ↕ ↕
%size(my_cell)        = 1x5

正如您在上面看到的,单元格数组的第一个维度的大小与表的第一个维度的大小不匹配。所以你可以简单地用.'

所以现在:

%size(my_table.col_3) = 5x1
%                       ↕ ↕
%size(my_cell.')      = 5x1

matlab(和你)很高兴。


推荐阅读