根据这个 MATLAB newsgroup thread,线程似乎无法修改图形对象。只有桌面 MATLAB 客户端可以做到这一点。这意味着您无法处理来自线程的图形更新,我可以在尝试时确认这一点,并且无法修改图形甚至来自线程的根对象。
但是,我认为您可以在 MATLAB 中进行主要图形更新,同时线程处理轮询您的输入。这是一个示例函数,用于持续更新显示,直到等待输入的线程KbCheck
完成运行:
function varargout = plot_until_input
obj = createJob(); %# Create a job
task = createTask(obj,@get_input,4,{deviceNumber}); %# Create a task
submit(obj); %# Submit the job
waitForState(task,'running'); %# Wait for the task to start running
%# Initialize your stimulus display here
while ~strcmp(get(task,'State'),'finished') %# Loop while the task is running
%# Update your stimulus display here
end
varargout = get(task,'OutputArguments'); %# Get the outputs from the task
destroy(obj); %# Remove the job from memory
%#---Nested functions below---
function [keyIsDown,secs,keyCode,deltaSecs] = get_input(deviceNumber)
keyIsDown = false;
while ~keyIsDown %# Keep looping until a key is pressed
[keyIsDown,secs,keyCode,deltaSecs] = KbCheck(deviceNumber);
end
end
end
我能够使用一些简单的绘图例程成功运行上述函数,并用get_input
简单的暂停语句和返回值替换代码。我不确定是否KbCheck
会在线程中工作,但希望您能够根据自己的需要进行调整。
以下是上述代码中使用的 Parallel Computing Toolbox 函数的文档:createJob
, createTask
, submit
, waitForState
, destroy
.