嗨,我在 Matlab (PDS(:,39)) 中有一列值。此列针对各种内容进行了过滤,并且有两个单独的标记列 (PDS(:,[41 81])),对于有效行为 0,对于无效行为 -1。我正在取有效数据的平均值,如果平均值高于 0,我想让这个值无效并再次取平均值,直到平均值低于某个值(在本例中为 0.2)。这是我的代码:
% identify the VALID values
U1 = (PDS(:,81)==0);
F1 = (PDS(:,41)==0);
% only calculate using the valid elements
shearave = mean(PDS(U1&F1,39));
while shearave > 0.2
clear im
% determine the largest shear value overall for filtered and
% non-flagged
[c im] = max(PDS(U1&F1,39));
% make this value a NaN
PDS(im,39)=NaN;
% filter using a specific column and the overall column
PDS(im,41)=-1;
F1 = (PDS(:,41)==0);
% calculate shear ave again using new flagging column - remove the ";" so I can see the average change
shearave = mean(PDS(U1&F1,39))
end
Matlab 给我的输出是:
剪切 =
0.3032
剪切 =
0.3032
剪切 =
0.3032
ETC
循环不会使用新的有效数据重新评估。我该如何解决这个问题?我必须休息还是继续?或者也许是不同类型的循环?谢谢你的帮助。