【问题标题】:Matlab: mean and stddev in a cellMatlab:单元格中的均值和标准差
【发布时间】:2017-01-31 06:12:01
【问题描述】:

在单个数组中,获取其数字的mean 或标准差 (std) 非常简单,但是在一个单元格中,其数据在每个位置的大小都不相同'不要mean2 或std2。

我知道如果我将所有数据复制到单行或单列中就可以做某事,但我只是想问是否有人知道是否有一个公式可以做到这一点?

谢谢

【问题讨论】:

  • 您能否向我们展示您的数据示例和预期输出?
  • 您想计算每个单元格元素的mean,还是所有单元格中所有元素的mean?请添加一个小示例来说明您想要实现的目标
  • 嗨@Shai,我想得到单元格中所有元素的平均值和标准差,但你已经给出了答案。谢谢你。

标签: matlab mean cell-array


【解决方案1】:

您可以使用cellfun 计算每个单元格mean 和std:

cell_mean = cellfun(@mean, my_cell);
cell_std = cellfun(@std, my_cell);

例如:

>> my_cell = {[1,2,3,6,8], [2,4,20]}
>> cellfun(@mean, my_cell)
ans =

4.0000    8.6667

>> cellfun(@std, my_cell)
ans =

2.9155    9.8658

如果您想要所有单元格中所有元素的mean 和/或std,您可以:

>> mean([my_cell{:}])
ans =

5.7500

>> std([my_cell{:}])
ans =

6.2048

而且,如果您的单元格元素大小不同,您可以使用cell2mat 来帮助您:

>> mean(cell2mat(cellfun(@(x) x(:)', my_cell, 'uni', 0)))
ans =

5.7500

>> std(cell2mat(cellfun(@(x) x(:)', my_cell, 'uni', 0)))
ans =

6.2048    

【讨论】:

  • 最后一段被限制为不同长度的行向量。不同大小的矩阵无法使用。
猜你喜欢
  • 2013-04-24
  • 2015-10-24
  • 2015-03-05
  • 2020-12-26
  • 2020-04-15
  • 1970-01-01
  • 2021-09-06
  • 2014-03-21
相关资源
最近更新 更多