【问题标题】:How to add two cells in matlabmatlab如何将两个单元格相加
【发布时间】:2012-09-26 11:35:33
【问题描述】:

我有 B 像这样:

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 = {'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

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

【问题讨论】:

    标签: matlab matrix dimensions cell-array


    【解决方案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)
    

    【讨论】:

      【解决方案2】:

      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

      【讨论】:

        猜你喜欢
        • 2016-09-15
        • 1970-01-01
        • 2013-09-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-09-16
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多