String MATLAB-存储字符串

String MATLAB-存储字符串,string,matlab,matrix,cell,String,Matlab,Matrix,Cell,我想创建一些东西来存储字符串,例如: for x = 1:3 fruit = strcat('orange', num2str(x)); A = {fruit}; 我如何输出一个1x3矩阵 A = orange1 orange2 orange3 我试过几件事,但都不管用 我不认为这很复杂,但我就是不明白 在我完成这项工作之后,我是否能够将一个标准的数值矩阵与一个 N = [1 2; 3 4; 5 6]; FINAL = [N A]; >>output of FINAL

我想创建一些东西来存储字符串,例如:

for x = 1:3

fruit = strcat('orange', num2str(x));

A = {fruit};
我如何输出一个1x3矩阵

A = 
orange1
orange2
orange3
我试过几件事,但都不管用

我不认为这很复杂,但我就是不明白

在我完成这项工作之后,我是否能够将一个标准的数值矩阵与一个

N = [1 2; 3 4; 5 6];

FINAL = [N A];

>>output of FINAL would look like
FINAL = 
1 2 orange1
3 4 orange2
5 6 orange3

在MatLab中,数值数组只能与数值数组连接。如果要创建具有不同数据类型的数组,则需要使用单元格数组

为了回答您的第一个问题,我建议您首先将水果声明为单元格数组,然后用所需的数据填充它:

fruit = cell(3,1);
for i =1:3
    fruit{i} = strcat('orange',num2str(i));
end
fruit
这将产生所需的输出

对于第二个问题,如果要将数值数组与单元数组连接起来,首先需要使用num2cell将其转换为单元数组,例如:

N = [1 2;3 4;5 6];
FINAL = [num2cell(N),fruit]
在这种情况下,FINAL将是一个包含9个单元格的数组,您可以像FINAL{1,3}=orange1一样访问它。要使用单元格编写紧凑的代码,您应该了解cellfun和deal这两个有用的函数


希望这有帮助

在MatLab中,数值数组只能与数值数组连接。如果要创建具有不同数据类型的数组,则需要使用单元格数组

for x = 1:3
    fruit = ['orange', num2str(x)];
    A{x,1} = fruit;
end

N = [1 2; 3 4; 5 6];
N_as_cell = num2cell(N);

FINAL = cat(2, N_as_cell, A);
为了回答您的第一个问题,我建议您首先将水果声明为单元格数组,然后用所需的数据填充它:

fruit = cell(3,1);
for i =1:3
    fruit{i} = strcat('orange',num2str(i));
end
fruit
这将产生所需的输出

对于第二个问题,如果要将数值数组与单元数组连接起来,首先需要使用num2cell将其转换为单元数组,例如:

N = [1 2;3 4;5 6];
FINAL = [num2cell(N),fruit]
在这种情况下,FINAL将是一个包含9个单元格的数组,您可以像FINAL{1,3}=orange1一样访问它。要使用单元格编写紧凑的代码,您应该了解cellfun和deal这两个有用的函数


希望这有帮助

您正在告诉“如何获得1x3矩阵的输出”,但您显示的输出是3x1。那么,您希望矩阵A是1x3还是3x1?您正在告诉“如何获得1x3矩阵的输出”,但您显示的输出是3x1。那么,你希望矩阵A是1x3还是3x1?+1你打败了我,有了更好的解释,我不知道你可以在没有
cat
函数的情况下连接单元格。呃,我的第一篇帖子!我也不知道,我只是偶然发现。。。我很少使用它们,因为它们对于大型数组计算非常慢。。。最好使用另一种数据表示。。。干杯+1你打败了我,有更好的解释,我不知道你可以在没有
cat
函数的情况下连接单元格。呃,我的第一篇帖子!我也不知道,我只是偶然发现。。。我很少使用它们,因为它们对于大型数组计算非常慢。。。最好使用另一种数据表示。。。干杯
for x = 1:3
    fruit = ['orange', num2str(x)];
    A{x,1} = fruit;
end

N = [1 2; 3 4; 5 6];
N_as_cell = num2cell(N);

FINAL = cat(2, N_as_cell, A);