안녕하세요 저는 Matlab (PDS (:, 39))의 값 열을 가지고 있습니다. 이 열은 다양한 항목에 대해 필터링되며 유효한 행의 경우 0 또는 유효하지 않은 행의 경우 -1 인 두 개의 별도의 플래그 표시 열 (PDS (:, [41 81])이 있습니다. 나는 유효한 데이터의 평균을 취하고 평균이 0보다 큰 경우이 값을 유효하지 않게 만들고 평균값이 특정 값 (이 경우 0.2) 이하가 될 때까지 다시 평균을 취하고 싶습니다. 여기 내 코드입니다 :Matlab에서 반복적으로 열의 평균을 취합니다.
% 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에 저를 준다 출력은 다음과 같습니다
shearave =
0.3032
shearave =
0.3032
shearave =
,515,0.3032
등 루프는 새로운 유효 데이터로 재 evalulating되지
. 이 문제를 어떻게 해결합니까? 휴식을 취하거나 계속해야합니까? 아니면 다른 유형의 루프일까요? 어떤 도움을 주셔서 감사합니다.
+1 매우 영리합니다. –
예, 방금 같은 결론에 도달했습니다. 내림차순으로 정렬하고 평균값이 0.2 미만이 될 때까지 값을 제거하여 타임 스탬프로 제거해야하는 값을 식별했습니다. 나는 내 마음 속에서 반복했다. 도움이 될 것이다. 감사! – user1854628