2017-06-06 108 views
1

我正在研究一个应用程序,通过USB从4个传感器接收大量数据并在Matlab中显示它们。在处理时进行流式处理

流式传输完美,但是,我需要对数据进行流处理。我使用传入数据的一部分并处理它们,然后绘制处理后的数据。传入的数据是分段处理的。

我的问题是,如果我在每段中处理5秒钟的数据。当处理和绘图被执行时,流式传输停止,因此当下一批处理的时候,我必须等待下一个5秒段的流式传输。即使我在20秒后延迟处理的开始时间,流处理将始终停止,处理开始时我会一直停留一小段时间来读取新数据。即使在我处理数据时,如何保持串口或数据接收不受串口干扰?

感谢

回答

1

你应该用一个工作者线程来执行你的处理。这可以在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命令。