【发布时间】:2019-06-29 23:08:57
【问题描述】:
我是Matlab的新手,我需要估计一个向量中非均匀数据长度的平均值。我有一个带有标志列(一和零)、时间戳和我感兴趣的变量的矩阵。基本上,数据(来自仪器)在标志:零(参考值)中测量 N 时间,标志:在样本中测量 N 时间。 N 是可变的,但在 28-30 秒之间波动。
我需要实现的是为每个测量周期估计每个标志的平均值:零和标志:一个。
到目前为止我做了什么:
for i=1:numel(inlet)
if inlet(i)== 1; co2_0(i)=NaN; end
end
for i=1:numel(inlet)
if inlet(i)== 0; co2_1(i)=NaN; end
end
这基本上是在不满足条件(即零或一)时放置 NaN。
然后,我尝试做一个嵌套的 for/if 循环,但这是我无法估计平均值的部分
for i = 1:1:length(inlet)
if inlet (i) == 1
co2_avg(i) = co2_1 (i);
end
for j=1:length(co2_avg)
co2_mu (j) = mean(co2_avg);
end
end
感谢任何帮助
【问题讨论】:
-
目前还不清楚你想要的平均值。如果在第 1 列为 0 或 1 时只想要第 3 列的平均值,则可以执行
m0 = mean( X( X(:,1) == 0, 3 ) )和m1 = mean( X( X(:,1) == 1, 3 ) )... -
嗨 Wolfie,是的,这是第 3 列,您共享的代码的想法正是我所需要的。但这会根据条件给出零或一时所有数据的平均值。我没有的是 for 循环来移动每 29 个数据点(1 到 0 之间的数据点数)。
-
“我需要的那种但是...”?这是否解决了您的问题或仍有未解决的问题?
-
还有块平均的部分。假设矩阵是 3 列和 116 行。那是“一”的2个周期和“零”的2个周期。那么,最终的结果应该是 2 个零循环和 1 个循环的平均值的 4 个值
-
Edit 你的问题包括minimal reproducible example。尝试解释您的描述非常困难,如果您仅提供一个小示例和预期结果会更更清楚。
标签: matlab for-loop moving-average