2017-06-06 21 views
1

私は、4つのセンサーからUSB経由で大量のデータを受信し、MATLABに表示するアプリケーションに取り組んでいます。処理中のストリーミング

ストリーミングは完全に機能しますが、ストリーミング中にデータを処理する必要があります。私は入ってくるデータのセグメントを使い、処理したデータをプロットします。入ってくるデータはセグメントごとに取り込まれ、処理されます。

私の問題は、すべてのセグメントで5秒分のデータを処理している場合です。処理とプロットが実装されると、ストリーミングが停止するので、次のバッチが処理されるときに、次の5秒のセグメントのストリーミングを待たなければなりません。 20秒後に処理の開始を遅らせても、処理が開始されるとストリーミングは常に停止し、新しいデータを読み取るためには少し休止します。データの処理中でもシリアルポートからのストリーミングやデータ受信を継続するにはどうすればよいですか?

ありがとうございます。

答えて

1

処理を実行するには、ワーカースレッドを使用する必要があります。これは、次のようparfevalコマンドを使用して、MATLABで行うことができます別の方法として

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コマンドを使用することができます。

関連する問題