我正在开发一个应用程序,我通过USB从4个传感器接收大量数据,并将它们显示在Matlab中。
流式处理工作得很好,但是,我需要在流式处理数据时对其进行一些处理。我使用传入数据的片段并对其进行处理,然后绘制处理后的数据。传入的数据逐段获取并进行处理。
我的问题是,如果我在每个数据段中处理5秒的数据。当执行处理和绘图时,流停止,因此,当下一批处理的时间到时,我必须等待下一个5秒段的流。即使我将处理的开始延迟到比方说20秒之后,当处理开始时,流总是会停止,并且我将总是有一个小的暂停来读取新的数据。即使在处理数据时,如何保持来自串行端口的流或数据接收正常?
谢谢
发布于 2017-06-06 14:16:35
您应该使用工作线程来执行处理。这可以在matlab中使用parfeval命令来完成,如下所示:
parpool % start a parallel pool (may take some time)
...
nOutputs = 1; % number of outputs
in1 = 1; % first input argument
in2 = 2; % second input argument
f = parfeval(@your_function, nOutputs, in1, in2); % execute your function with two input arguments as example
...
% check regularly if the function is executed
if strcmp(f.State, 'finished') == 1
output = fetchOutputs(f);
... % do something with the output
delete(f); % empty resources
end或者,您可以使用batch命令。
https://stackoverflow.com/questions/44381722
复制相似问题