2016-05-15 11 views
-1

私は、MATLABにストリーミング信号出力を持っています。ノッチフィルタとバタワースフィルタでこの信号をフィルタリングし、ストリームされた信号入力とフィルタリングされたデータをプロットする間に、このストリーミングされたフィルタリングされたデータをすぐにプロットします。これについて最善の方法は何でしょうか?私は連続しているデータをフィルタリングする方法についてはわかりません。ありがとう。ノッチフィルタとバタワースを使用したフィルタデータ

答えて

0

私は最終的に私の問題を解決することができました。もともと私のコードは次のように見えた:

figure 

% Plot known length data without filter 
for i = 1:4 
    subplot(4,1,i); 
    plot(newData(:,1),newData(:,i+1)) 
end 

figure 

% Filter Parameters 
wo = 50/(1000/2); % notch filter frequency 
bw = wo/5; 
bs = 30/(1000/2); % lower cut off frequency 
[b,a] = iirnotch(wo,bw); % notch filter 
[b2,a2] = butter(4,bs,'high'); % highpass butterworth design filter 

row = length(newData); 
butterData = zeros(row,4); 

% Plot known length data with filter 
for i = 1:4 
    notchData = filter(b,a,newData(:,i+1));  
    butterData(:,i) = filter(b2,a2, notchData); 
    subplot(4,1,i); 
    plot(newData(:,1),butterData(:,i)) 
end 

そして、私はいくつかのいじりの後にこれで終わった:

figure 
h = plot(nan); 

% Plot uknown length of continous data with filter 
for i = 1:row 
    notchData = filter(b,a,newData(1:i,2));  
    butterData(1:i,1) = filter(b2,a2, notchData); 
    set(h,'XData',newData(1:i,1),'YData',butterData(1:i,1)) 
    drawnow 
end 

を実行している時間と交換することができる「不明」行の長さで。私は今、私のデータを「リアルタイム」でフィルタリングすることができます。これを可能にするのに役立つ重要な点は、データ取得の始めから現在のデータ時間にセット関数を置き、描画関数を使ってプロットを更新するようにすることです。私はこれが、リアルタイムで、ストリーミング/連続データをフィルタリングしようとする試みと同じ問題を持つ人に役立つことを願っています。

関連する問題