トリスタンの回答を基にして、Matlabと互換性があるかもしれないし、そうでないかもしれないいくつかのオクターブコードがあります。バター関数は、あなたの伝達関数係数を導き出します。 。
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]);
合理的な品質の現実的な、完全に指定されたフィルタを得るために、あなたはまた、阻止帯域減衰量(S)、通過帯域のリップル、遷移幅をスペックしたい場合があります。何をしても、FFTのいくつかのビンをゼロにしないでください。 – hotpaw2