ノッチフィルターに概念的な問題があります。私が理解している限り、ノッチフィルター出力はハイパスフィルター出力とローパスフィルター出力の合計に等しくなります。ただし、MATLABでの簡単なテストでは、これは示されません。ここにいくつかのテストコードがあります:
% Load a simple signal and specify constants
load handel; % this loads the signal, y, and its sampling rate, Fs
nData=y;
nFreq=[55 65];
nOrder=4;
% Create a lowpassed signal
[b a]=butter(nOrder,nFreq(1)/(Fs/2),'low');
nLP_Data=filter(b,a,nData);
% Create a highpassed signal
[b a]=butter(nOrder,nFreq(2)/(Fs/2),'high');
nHP_Data=filter(b,a,nData);
% Combine LP and HP signals
nCombinedHPLP=nLP_Data+nHP_Data;
% Create a notch filtered signal
[b a]=butter(nOrder/2,nFreq/(Fs/2),'stop'); % The notch filter uses twice the first input argument for its order, hence the "/2"
nN_Data=filter(b,a,nData);
% Plot each and output the total difference in the signals to the Command Window
plot(nN_Data,'r')
hold all
plot(nCombinedHPLP,'b')
legend({'Notched signal','Combined HP, LP signals'});
sum(abs(nCombinedHPLP-nN_Data))
filter
に変更するfiltfilt
と2つの同じ信号が生成されるため、この違いはフィルターの位相効果によるものだと思います。ハイパスフィルターとローパスフィルターでノッチフィルターの効果を再現する方法(「フィルター」を使用)はありませんか?読んでくれてありがとう。