我是MATLAB的新手,我有一个问题要问。我目前正在使用此UI,其中包含如下所示的代码。
% --- Executes on button press in Start.
function Start_Callback(hObject, eventdata, handles)
% hObject handle to Start (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
global s brightness a t;
t = 0.1
a = 1;
readasync(s);
while (a == 1)
brightness = str2double(fscanf(s, '%s', 8));
set(handles.brightness, 'String', num2str(brightness));
disp(brightness);
if brightness < 87
if brightness < 44
fprintf(s, '%s',1);
else
fprintf(s,'%s',2);
end
else
if brightness < 130
fprintf(s, '%s',3);
else
fprintf(s, '%s',4);
end
end
if(a==0)
break;
end
pause(1/10);
end
如您所见,我目前正在使用暂停功能来延迟while循环。然而,我在大学的导师建议我使用tic toc而不是暂停来延迟循环。我不知道该怎么办呢。他给了我这个功能,但我不知道如何实现它。有什么建议吗?
function delay(t)
tic;
while toc < t
end
end
答案 0 :(得分:1)
如果您有pause(1/10)
,请改写delay(1/10)
。它们并不完全相同,因为pause
具有刷新可能排队的任何图形更新和GUI回调的副作用。
答案 1 :(得分:0)
正如excaza所示,您可以用pause(1/10);
替换行delay(1/10);
,但函数delay
必须对其被调用的位置可见(例如,您可以在名为delay.m
的同一目录,其中包含您导师的代码。)
指出用pause(1/10);
替换代码tic; while toc < 1/10 end;
在功能上完成同样的事情可能会有所帮助,即使从编码实践/可读性的角度来看这并不是很好。< / p>