Matlab:计算嵌套在struct中的数组的平均值

时间:2018-05-08 21:17:39

标签: arrays matlab struct

我有一个3个字段的结构调用CDF,都是双数组,大小为1x48。 (下面) enter image description here

我需要获取cdfSR字段的平均值(或平均值),但要跨越每个struct元素。如果我不够清楚我需要

<%= Enum.map(@items, fn(item) -> %>                                                                                                                                                      
  <%= item.name %>                                                                                                                                                                        
<% end) %>  

每次我尝试实现“CDF(:)。cdfSR(1)”时,都会收到错误消息:

大括号或点索引表达式的预期输出,但有895个结果。

但是,我想要所有895个结果。

1 个答案:

答案 0 :(得分:2)

表达式

CDF(:).cdfSR(1)

返回以逗号分隔的列表,其中包含ii=1:895个元素CDF(ii).cdfSR(1)。您可以使用方括号捕获这些:

[CDF(:).cdfSR(1)]

相当于

[CDF(1).cdfSR(1), CDF(2).cdfSR(1), CDF(3).cdfSR(1), ...]

因此,您发布的代码可以写成:

[ sum([CDF(:).cdfSR(1)])/895, sum([CDF(:).cdfSR(2)])/895, ..., sum([CDF(:).cdfSR(48)])/895 ]

但当然这也不可行。由于CDF(ii).cdfSR是一个水平向量,我建议你垂直连接它们:

vertcat(CDF(:).cdfSR)

vertcat(a,b,c)[a;b;c]相同。您也可以使用cat(1,...)

这导致895x48双阵列。您可以使用mean

取平均值
mean(vertcat(CDF(:).cdfSR), 1);