running parallel loop until a variable or event
조회 수: 1 (최근 30일)
이전 댓글 표시
Hi guys, I'm trying to make a button blink every time just when a varriable or event change:
function blink(hObject, eventdata, parent_GUI)
handles = guidata(parent_GUI);
parfor i=1:3
if get(handles.boton_circulo_visible_in,'Value')==0
i=i-1;
end
set(handles.CONECTAR,'ForegroundColor',[1,1,1]);
disp('prendido')
pause(0.5)
set(handles.CONECTAR,'ForegroundColor',[0,0,0]);
disp('apagado')
pause(0.5)
end
I tried with parfor loop but it say show me an error " changing the loop index is invalid inside a parfor loop iteration". So i loop up abaout other parallel loop like spmd, but also it executes only single time. I dont know what can i do to make that iterative until a variable change
Thanks
댓글 수: 0
답변 (1개)
Ronit
2024년 8월 21일
Hello Juan,
The error you're encountering is since parfor does not allow modification of the loop index within the loop body. Additionally, parfor is intended for parallel execution, which might not be necessary for your blinking button functionality. Instead, you can use a while loop to continuously check the variable's value and blink the button accordingly.
function blink(hObject, eventdata, parent_GUI)
handles = guidata(parent_GUI);
while true
% Check the condition to continue blinking
if get(handles.boton_circulo_visible_in, 'Value') == 0
% Button is off, keep blinking
set(handles.CONECTAR, 'ForegroundColor', [1, 1, 1]);
disp('prendido');
pause(0.5);
set(handles.CONECTAR, 'ForegroundColor', [0, 0, 0]);
disp('apagado');
pause(0.5);
else
% Button is on, stop blinking
break;
end
end
end
I hope it helps your query!
댓글 수: 0
참고 항목
카테고리
Help Center 및 File Exchange에서 Loops and Conditional Statements에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!