Câu hỏi của tôi là, nếu tôi muốn truyền tín hiệu cao, nó có giống như truyền tín hiệu thấp và trừ tín hiệu khỏi tín hiệu không? Về mặt lý thuyết có giống nhau không? Có thực tế giống nhau không?
Tôi đã tìm kiếm (cả trên google và dsp.stackexchange) và tôi tìm thấy câu trả lời mâu thuẫn. Tôi đã chơi với một tín hiệu và đây là kết quả. Tôi không thể hiểu nhiều về nó. Đây là tín hiệu với tần suất lấy mẫu cứ sau bốn giây. Tôi đã thiết kế bộ lọc thông thấp kỹ thuật số với dải chuyển tiếp từ 0,8 mHz đến 1 mHz và lọc tín hiệu. Sau đó tôi cũng thiết kế một bộ lọc thông cao có cùng dải chuyển tiếp và lọc tín hiệu. Đây là kết quả.
Bức ảnh đầu tiên này cho thấy tín hiệu gốc có màu đen và tín hiệu truyền thấp màu xanh lam. Họ gần như nằm trên nhau nhưng không hoàn toàn. Đường cong màu đỏ là tín hiệu trừ đi tín hiệu truyền cao nằm ngay trên đầu tín hiệu.
Hình ảnh thứ hai này chỉ là hình ảnh đầu tiên được phóng to để hiển thị những gì đang xảy ra. Ở đây chúng ta thấy rằng rõ ràng hai không giống nhau. Câu hỏi của tôi là tại sao? Đây có phải là một cái gì đó về cách tôi đã thực hiện hai bộ lọc hay nó là một cái gì đó độc lập về mặt lý thuyết với việc thực hiện của tôi? Tôi không biết nhiều về thiết kế bộ lọc nhưng tôi biết rằng nó nổi tiếng là phản trực giác. Dưới đây là mã MATLAB đầy đủ để tái tạo tất cả điều này. Tôi đang sử dụng lệnh lọcfilt để loại bỏ sự chậm trễ pha. Nhưng một điều khác cần chỉ ra ở đây là các bộ lọc không được chuẩn hóa. Khi tôi tính tổng (Hd.Numerator), tôi nhận được 0,9930 cho đường chuyền thấp và 0,007 cho đường chuyền cao. Tôi không thấy làm thế nào để giải thích cho điều này. Có nên thu nhỏ đầu ra bằng cách nào đó bởi vì các hệ số không cộng với một? Điều này có thể có một cái gì đó để làm với điều này?
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')