2012-10-05 46 views
2

我具有B- < 1×3,1×细胞>是这样的:如何添加两个单元在MATLAB

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] 

而且我想添加一个< 4×细胞>是这样的:

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 

我得到的是“矩阵尺寸必须同意”。 我该如何正确地做到这一点?

回答

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

您的代码包含几个问题:

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

第二个是以下。 B {i}是大小为7×1的矩阵,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) 
相关问题