2010-12-08 16 views
4

私はデータの配列を持っています、それは時間領域です。各データはマグニチュードを表しています。それらのデータは10,000Hzの周波数でサンプリングされる。 私は2つの周波数f1とf2の間にバンドパスフィルタをかけたいと思います。ローパスフィルタとハイパスフィルタを行う必要があると思います。信号はFFTを行い、次に2つのフィルタを通過してからinvserse FFTを実行します。私の質問は、低域通過フィルターと高域フィルターを簡単に行う方法です。私は2つのカットオフ周波数に基づいて伝達関数を導出する方法を知らない。matlabフィルターの質問

誰でも知っていますか?

おかげ

+1

合理的な品質の現実的な、完全に指定されたフィルタを得るために、あなたはまた、阻止帯域減衰量(S)、通過帯域のリップル、遷移幅をスペックしたい場合があります。何をしても、FFTのいくつかのビンをゼロにしないでください。 – hotpaw2

答えて

3

トリスタンの回答を基にして、Matlabと互換性があるかもしれないし、そうでないかもしれないいくつかのオクターブコードがあります。バター関数は、あなたの伝達関数係数を導き出します。 alt textalt text

hz = 8000; 
x = [1:1:hz*10]; 
t = x./hz; 
pi = 3.1415; 

% Create signal with 10 hz, 200 hz and 500 hz components 
raw_signal = sin(10*2*pi*t)+sin(200*2*pi*t)+sin(500*2*pi*t); 

% View Raw Signal Over .1 Second Window 
plot(t, raw_signal) 
title('Raw Signal with 10Hz, 200Hz, 500Hz Components') 
xlabel('Time (Sec)') 
ylabel('Amplitude') 
set(gca,'XLim', [5, 5.1]); 

% Create Band Pass Butterworth Filter 
[S_numer, S_denom] = butter(5, [100/hz 350/hz]); 
band_passed_signal = filter(S_numer, S_denom, raw_signal); 

% View Band Pass Filtered Signal Over .1 Second Window 
plot(t, band_passed_signal) 
title('Band Pass Filtered Signal') 
xlabel('Time (Sec)') 
ylabel('Amplitude') 
set(gca,'XLim', [5, 5.1]); 
2

MATLABは、あなたが(いくつかの問題につながる可能)FFT-IFFTのことを自分で行う必要はありませんので、フィルタリングを行いますツールがあります。あなたがしたいことをするには、butterfilterの組み合わせを試してみてください。

Butter

Filter

2

あなたはなど私はあなたがsptoolを使用してフィルタを設計提案する信号処理ツールボックス、また、あなたの振幅と位相応答を示し、フィルタ設計のためのGUIツールを使用している場合は何バンドパスフィルタではありません。また、ローパスフィルタとハイパスフィルタから構成することもできますが、Matlabではバンドパスフィルタを直接使用することもできます。

ツールボックスをお持ちでない場合は、The Scientist and Engineer's Guide to Digital Signal Processingを参照することをお勧めします。本書全体はオンラインで入手でき、Matlabに簡単に翻訳できるBasicのサンプルコードがたくさんあります。例えばDesigning bandpass windowed sinc filterである。

+0

基本的な信号処理?誰がそれをやりたいのですか? –

+1

明らかに、実際のアプリケーションではBasicコードを使用しませんが、本書では「* DSPを使用するよりもDSPの要件が大きく異なります。したがって、この場合のBasicは、どんな言語にも簡単に変換できる擬似コードとしてさらに役立ちます。 –

+0

@NathanFellman:Basicは、30年前に行われたすべてのパーソナルコンピュータに共通のプログラミング言語でした。だから、Fortran後の歴史的なリンガルアフランカでしたが、Cがより一般的になる前に。 「本当の」DSPアセンブリ言語は、通常、非常に移植性がありませんでした。 – hotpaw2