【问题标题】:How to sum a cell in MatlabMatlab中如何对单元格求和
【发布时间】:2017-02-14 19:03:05
【问题描述】:

我是 Matlab 的新学习者,现在想在 Matlab 中添加一个列元素的单元格,不知何故“sum”函数不起作用,它显示“未定义函数 'sum' 用于类型 'cell' 的输入参数“,有没有人知道怎么做?非常感谢!:)

我的数据是这样的: '218148' '106856' '255673' '156279' '175589' '310762' '87128' '123339' '149070' '104556' '206346' '216278' '235786'

【问题讨论】:

  • 您能否向我们展示您的数据示例。您必须先将其转换为数值数据类型,然后才能对其求和。
  • 是的,数组是数值型的,类似于:'218148' '106856' '255673' '156279' '175589' '310762' '87128' '123339' '149070' '104556' ' 206346''216278''235786''236087''99137''123335''130021''101655''98159''102047''824411''63290'
  • 是的,它们不是数字,它们是字符串。请参阅下面的@Sardar_Usama 的答案。
  • 我删除了我的答案。查看@EBH 的回答

标签: matlab


【解决方案1】:

您的单元格是字符串,因此您首先必须将它们转换为数字:

C = { '218148' '106856' '255673' '156279' '175589' '310762' '87128'...
    '123339' '149070' '104556' '206346' '216278' '235786' '236087'...
    '99137' '123335' '130021' '101655' '98159' '102047' '824411' '63290'};
Csum = sum(str2double(C));

结果:

Csum =
     4123952

【讨论】:

  • 但它显示错误:错误使用 cat 连接的矩阵的尺寸不一致。 cell2mat 中的错误(第 83 行) m{n} = cat(1,c{:,n}); SNL 中的错误(第 7 行)s=sum(cell2mat(Shop_MYR));
  • 哦,我不知道str2double 可以直接应用于单元格。 +1
【解决方案2】:

您可以像这样调用单元格的内容:

your_cell{:}

如果所有值都是数字,则可以将此结果分组为向量:

[your_cell{:}]

然后你可以很容易地总结这个结果:

sum([your_cell{:}])

一个小例子:

c{1} = 1;
c{2} = 3;
c{3} = 6;
sum([c{:}])

结果:

ans =
    10

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-14
    • 2010-10-24
    • 2012-08-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多