Arrays Matlab:计算嵌套在结构中的数组的平均值

Arrays Matlab:计算嵌套在结构中的数组的平均值,arrays,matlab,struct,Arrays,Matlab,Struct,我有一个由3个字段组成的结构调用CDF,所有字段都是双数组,大小为1x48。(下文) 我需要得到cdfSR字段的平均值(或平均值),但要跨越每个struct元素。如果我不够清楚,我需要 [ sum(CDF(:).cdfSR(1))/895, sum(CDF(:).cdfSR(2))/895, ..., sum(CDF(:).cdfSR(48))/895 ] 每次尝试实现“CDF(:).cdfSR(1)”时,我都会收到一个错误: 期望大括号或点索引表达式有一个输出,但有895个结果。 但是,我

我有一个由3个字段组成的结构调用CDF,所有字段都是双数组,大小为1x48。(下文)

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

[ sum(CDF(:).cdfSR(1))/895, sum(CDF(:).cdfSR(2))/895, ..., sum(CDF(:).cdfSR(48))/895 ]
每次尝试实现“CDF(:).cdfSR(1)”时,我都会收到一个错误:

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

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

表达式

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);
表情

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);

非常感谢你!平均值(vertcat(CDF(:).cdfSR),1)成功了!啊!当然,第一维度的平均值。修正了答案中的问题。谢谢非常感谢你!平均值(vertcat(CDF(:).cdfSR),1)成功了!啊!当然,第一维度的平均值。修正了答案中的问题。谢谢