타이머 개체를 사용하는 동안 for 루프에서 조건이 참인 횟수를 계산하는 방법에 대해이 문제가 있습니다. 그래서 나는 60 초마다이 함수를 호출하는 타이머 객체를 설정하고 X와 Z가 1 인 경우 데이터베이스에서 내 조건을 검사 한 다음 무언가를 수행합니다. 문제는 매 초마다 X와 Z의 값을 변경하는 프로그램이 있기 때문에 X와 Z가 모두 1 일 때마다 계산하기를 원합니다. 계수가 1, 2 및 3과 같으면 다르게 수행됩니다. 내가 그것을 실행할 때, X와 Z가 여러 번 1과 같음에도 불구하고 1을 넘지 않는다. 아래는 내 코드입니다MATLAB - 루프 조건이 참일 경우 카운트
a = timer('ExecutionMode', 'fixedRate','TimerFcn', 'func(1)', 'Period', 60);
start(a);
function [x] = func(y)
count = 0;
if x == y && z == y
count = count +1;
if count == 1
disp('1')
elseif count == 2
disp('2')
elseif count == 3
disp('3')
end
else
disp('same')
end
답장을 보내 주셔서 감사합니다. 예, count = count + 1은 타이머가이 함수를 호출 할 때마다 항상 1과 같습니다. 다음 번에 타이머 콜백 및 조건이 참인 경우 카운트 = 2로 설정하는 방법을 잘 모르겠습니다. – user2134351
대답은 간단합니다. 함수 자체에서 0으로 재설정하지 마십시오. 호출자 함수에 설정하고 func에 매개 변수로 전달하여 매번 func에서 가져옵니다 (예 : function [x, count] = func (y, count)). 그러나 두 방법 중 하나를 사용하면 함수 자체에서 카운트를 0으로 설정하지 마십시오. 매번 카운터를 재설정해야합니다. – Lolo