【问题标题】:MATLAB - storing stringMATLAB - 存储字符串
【发布时间】:2012-04-30 02:46:55
【问题描述】:

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

for x = 1:3

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

A = {fruit};

我怎样才能输出一个 1x3 的矩阵

A = 
orange1
orange2
orange3

我尝试了一些方法,但没有任何效果。

我不认为这很复杂,但我似乎没有理解它。

在我完成这个之后,我能否将一个正常的数值矩阵与 A 结合起来:

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

【问题讨论】:

  • 您在说“我如何获得 1x3 矩阵的输出”,但您显示的输出是 3x1。那么你希望矩阵 A 是 1x3 还是 3x1 呢?

标签: string matlab matrix cell


【解决方案1】:

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

要回答您的第一个问题,我建议您先将fruit 声明为元胞数组,然后用所需的数据填充它:

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,这是两个有用的函数。

希望这会有所帮助!

【讨论】:

  • +1 你打败了我,有更好的解释,我不知道你可以在没有cat 函数的情况下连接单元格。
  • 嗯,我的第一篇文章!也不知道,我只是偶然发现...我很少使用它们,因为它们对于大型数组计算非常慢...最好使用另一种数据表示...干杯!
【解决方案2】:
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);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-09-23
    • 1970-01-01
    • 2018-04-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-11
    相关资源
    最近更新 更多