2

我有 B <1x3 cell> 像这样:

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]

我想像这样添加一个 <4x2 cell> :

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

我得到的是“矩阵尺寸必须一致”。我怎样才能正确地做到这一点?

4

2 回答 2

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 中的最后一个值是'',它被转换为 a NaN

于 2012-10-05T10:32:05.760 回答
1

您的代码包含几个问题:

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

第二个紧随其后。B{i} 是大小为 7x1 的矩阵,A{j,2} 是单个数字。您想将此数字添加到矩阵 B{i} 的所有元素中吗?在这种情况下,您应该编写如下内容:

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

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

for j = 1:size(A,1)
于 2012-10-05T11:29:49.197 回答