Arrays Matlab:计算嵌套在结构中的数组的平均值
我有一个由3个字段组成的结构调用CDF,所有字段都是双数组,大小为1x48。(下文) 我需要得到cdfSR字段的平均值(或平均值),但要跨越每个struct元素。如果我不够清楚,我需要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个结果。 但是,我
[ 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)成功了!啊!当然,第一维度的平均值。修正了答案中的问题。谢谢