我有一个3个字段的结构调用CDF,都是双数组,大小为1x48。 (下面)
我需要获取cdfSR字段的平均值(或平均值),但要跨越每个struct元素。如果我不够清楚我需要
<%= Enum.map(@items, fn(item) -> %>
<%= item.name %>
<% end) %>
每次我尝试实现“CDF(:)。cdfSR(1)”时,都会收到错误消息:
大括号或点索引表达式的预期输出,但有895个结果。
但是,我想要所有895个结果。
答案 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);