У меня есть два сценария, которые я хочу выполнить одновременно. Таймер должен сделать это, но он не работает. Я настроил это так:
%main script
f=figure('units','Normalized','Outerposition',[0 0 1 1]);
h=animatedline('color','b','marker','.');
%% variables
i=1;
i_max=600;
x=[];
means=[];
count=0;
count_max=100;
espera=count_max/20;
i_max=600;
running=true;
t = timer('TimerFcn', 'script1;','StartDelay',1,'ExecutionMode','singleShot');
tt = timer('TimerFcn', 'script2;','StartDelay',1,'ExecutionMode','singleShot');
start(t);
start(tt);
disp('done')
Однако сначала выполняется только t, а затем tt. Выход:
>> main
done
start script1
end script1
start script2
end script2'
Сценарии довольно просты, я сначала пытаюсь заставить его работать:
%script1
disp('start script1')
while i<=i_max
x=[x;sin(i)+rand*randi([1 5])];
for k=1:lh
addpoints(h_notsave(k),i,x(i));
end
drawnow
i=i+1;
count=count+1;
end
running=false;
disp('')
disp('end script1')
%script2
disp('start script2')
while running
if count>=count_max
data=x(end-count_max+1:end);
means=[means;mean(data)];
count=0;
disp('inside if')
end
pause(espera);
end
disp('end script2')
Я не могу отправить каждый скрипт в разные потоки, потому что рабочие не поддерживают графики и не посылают информацию между ними.
Я думаю, что мы можем обновить график от работника, используя данные из очереди, но я не знаю, как.