私の質問は、信号をハイパスしたい場合、信号をローパスして信号から減算することと同じですか?理論的には同じですか?実質的に同じですか?
(googleとdsp.stackexchangeの両方で)検索しましたが、矛盾する答えが見つかりました。私は信号で遊んでいますが、ここに結果があります。私はそれをあまり理解できません。これは、4秒ごとに1回サンプリング周波数を持つ信号です。0.8 mHz〜1 mHzの遷移帯域を持つデジタルローパスフィルターを設計し、信号をフィルター処理しました。次に、同じ遷移帯域を持つハイパスフィルターを設計し、信号をフィルター処理しました。結果は次のとおりです。
この最初の画像は、元の信号を黒で、ローパス信号を青で示しています。それらはほぼ重なり合っていますが、完全ではありません。赤い曲線は、信号から信号の真上にあるハイパス信号を引いたものです。
この2番目の画像は、何が起こっているかを示すためにズームインした最初の画像です。ここでは、明らかに2つが同じではないことがわかります。私の質問はなぜですか?それは2つのフィルターをどのように実装したかに関するものですか、それとも私の実装とは独立した理論的なものですか?フィルターの設計についてはあまり知りませんが、直感に反することで有名です。これをすべて再現する完全なMATLABコードを次に示します。filtfiltコマンドを使用して、位相遅延を解消しています。ただし、ここで指摘するもう1つの点は、フィルターが正規化されていないことです。sum(Hd.Numerator)を実行すると、ローパスで0.9930、ハイパスで0.007が得られます。これを説明する方法がわかりません。係数の合計が1にならないため、出力を何らかの方法でスケーリングする必要がありますか?このスケーリングはこれと何か関係がありますか?
close all
clear all
clc
data = dlmread('data.txt');
Fs = 0.25; % Sampling Frequency
N = 2674; % Order
Fpass = 0.8/1000; % Passband Frequency
Fstop = 1/1000; % Stopband Frequency
Wpass = 1; % Passband Weight
Wstop = 1; % Stopband Weight
dens = 20; % Density Factor
% Calculate the coefficients using the FIRPM function.
b = firpm(N, [0 Fpass Fstop Fs/2]/(Fs/2), [1 1 0 0], [Wpass Wstop], {dens});
Hd = dsp.FIRFilter('Numerator', b);
sum(Hd.Numerator)
datalowpassed = filtfilt(Hd.Numerator,1,data);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Fs = 0.25; % Sampling Frequency
N = 2674; % Order
Fstop = 0.8/1000; % Stopband Frequency
Fpass = 1/1000; % Passband Frequency
Wstop = 1; % Stopband Weight
Wpass = 1; % Passband Weight
dens = 20; % Density Factor
% Calculate the coefficients using the FIRPM function.
b = firpm(N, [0 Fstop Fpass Fs/2]/(Fs/2), [0 0 1 1], [Wstop Wpass], {dens});
Hd = dsp.FIRFilter('Numerator', b);
sum(Hd.Numerator)
datahighpassed = filtfilt(Hd.Numerator,1,data);
figure
subplot(2,1,1)
plot(data,'-ko')
hold on
plot(datalowpassed,'-bo')
plot(data-datahighpassed,'-ro')
legend('Original Signal','Low-Passed','Signal - High-Passed')
subplot(2,1,2)
plot(data-datalowpassed,'-bo')
hold on
plot(datahighpassed,'-ro')
legend('Signal - Low-Passed','High-Passed')