如何在matlab中添加两个单元格

时间:2012-10-05 10:15:16

标签: matlab matrix dimensions cell-array

我有B< 1x3细胞>像这样:

B{1} = [2 1 19 22 29 13 14]
B{2} = [11 12 6 3 4 2 5]
B{3} = [3 2 23 13 4 7 8]

我想添加A< 4x2细胞>像这样:

A = {'a' '-1'; 'b' '1'; 'c' '2'; 'd' ''}

我试过这样:

for j=1:length(A)
  for i=1:1:length(B)
    C = B{i} + A{j,2};
  end
end

我得到的是“矩阵维度必须达成一致”。 我该怎么做呢?

2 个答案:

答案 0 :(得分:3)

A包含字符。您需要将字符串转换为数字才能将它们添加到B。使用例如str2double

for j=1:length(A)
  for i=1:1:length(B)
    C = B{i} + str2double(A{j,2});
  end
end

请注意,A中的最后一个值是'',它会转换为NaN

答案 1 :(得分:1)

您的代码包含几个问题:

首先在@angainor回答中显示。您需要将字符串转换为数字。

第二个是跟随。 B {i}是大小为7x1的矩阵,A {j,2}是单个数字。是否要将此数字添加到矩阵B {i}的所有元素中?在这种情况下,你应该写一些类似的东西:

B{i} + str2double(A{j,2}) * ones(size(B{i}))

第三个问题是长度(A)命令将返回A中的元素总数,例如4 * 2 = 8。 因此,您将遇到错误:无法访问元素A {5,2}。 您需要用

替换此行
for j = 1:size(A,1)