Tại sao bộ lọc dải dừng của tôi làm giảm các tần số khác?


12

Đây là mã của tôi cho tín hiệu hai âm, trong đó tôi sử dụng dải dừng để loại bỏ âm cao hơn và sau đó vẽ âm trước (màu xanh lam) và sau (màu đỏ) trong miền tần số sau khi kết hợp tín hiệu của tôi với các hệ số bộ lọc .

Nếu bạn đặt mã này vào Matlab, bạn có thể thấy rõ rằng tần số cao hơn đã được bộ lọc loại bỏ thành công, nhưng vì lý do nào đó, biên độ của tần số thấp hơn đã bị cắt giảm một nửa và tôi càng tăng # hệ số bộ lọc, nó càng làm phẳng toàn bộ đường cong của tôi, tại sao điều này xảy ra? Và làm thế nào tôi có thể ngăn chặn nó để dải dừng không lan ra ngoài? Đây là hình ảnh và mã:

nhập mô tả hình ảnh ở đây

lấy mẫu = 8000;
tSampling = 1 / fSampling;

t = 0: tSampling: 0,005;
F0 = 1000;
F1 = 3000;

xt = sin (2 * pi * F0 * t) + sin (2 * pi * F1 * t);
ht = Fir1 (40, .25, 'dừng');
yt = conv (xt, ht);

fAxis = -4000: 125: 4000-125;

xF = fft (xt, 64);
MagXF = frafthift (abs (xF));

cốt truyện (fAxis, MagXF);
Giữ lấy

yF = fft (yt, 64);
MagYF = frafthift (abs (yF));

cốt truyện (fAxis, MagYF, 'r')

1
Lọc băng thông / bandstop trong vốn không hoàn hảo và sẽ luôn ảnh hưởng đến các khu vực của phổ bạn muốn để lại một mình. Đó là bản chất của con thú.
Daniel R Hicks

1
Hmm ... có cách nào để chống lại điều này? Hoặc một bộ lọc tương đối đơn giản khác sẽ phù hợp hơn? Tôi không biết nhiều về các bộ lọc notch nhưng tôi biết rằng chúng thực sự là các bộ lọc chặn băng hẹp và Matlab có các lệnh cho chúng.
Zaubertrank

2
Như tôi đã nói, nó vốn có. Thiết kế bộ lọc luôn là một sự đánh đổi về mặt tối ưu hóa một số thông số bằng chi phí của người khác (và bằng chi phí).
Daniel R Hicks

Câu trả lời:


12

Các bộ lọc luôn có một "điểm dừng" vốn có trong đáp ứng tần số của chúng, vì thực tế bạn không thể nhận ra một dải thông là một chức năng hình chữ nhật hoàn hảo. Đối với bộ lọc thông thấp, điểm mà cường độ đáp ứng tần số của bạn giảm xuống -3dB được gọi là băng thông và mọi thứ vượt ra ngoài được gọi là băng tần dừng (về mặt kỹ thuật, mọi thứ nằm ngoài tần số góc, nhưng chúng tôi sẽ lấy tần số góc là mức -3dB). Tốc độ suy giảm đáp ứng tần số của bạn vượt quá dải tần phụ thuộc vào độ dài bộ lọc.

Nếu bạn nhìn vào đáp ứng tần số của bộ lọc ht, bạn sẽ thấy nó giảm xuống -6dB ở 1000 Hz:

nhập mô tả hình ảnh ở đây

Vì vậy, có ý nghĩa rằng công suất giảm 6dB sau khi lọc, mà bạn thấy trong hình của mình là một nửa biên độ.

Nếu bạn đã xem tài liệu về fir1chức năng mà bạn đã sử dụng, bạn cũng sẽ nhận ra điều này (nhấn mạnh của tôi):

B = fir1(N,Wn) thiết kế một N bộ lọc kỹ thuật số FIR thông qua thứ tự thấp và trả về các hệ số bộ lọc theo N+1vectơ chiều dài B. Tần số cắt Wn phải nằm giữa 0 < Wn < 1.0, 1.0 tương ứng với một nửa tốc độ mẫu. Bộ lọc Blà có thật và có pha tuyến tính. Độ tăng chuẩn hóa của bộ lọc tại Wn là -6 dB.

Bây giờ để tạo các bộ lọc sắc nét hơn, với các phản hồi khá gần với hình chữ nhật, bạn sẽ phải sử dụng các bộ lọc IIR, đi kèm với một loạt các vấn đề với sự ổn định, v.v., nhưng chắc chắn là một tùy chọn. Bạn có thể thấy câu trả lời của tôi ở đây cho một số ý tưởng về việc triển khai bộ lọc IIR phần 2, dạng thứ hai rời rạc, cho các góc rất sắc nét. Ví dụ có cho bộ lọc thông dải, nhưng bạn có thể đọc tài liệu cho các chức năng được sử dụng ở đó và tự thực hiện phiên bản thông thấp.


1

Phải mất thời gian để bộ lọc "quyết định" nếu tín hiệu ở bên trong hoặc ngay bên ngoài quá trình chuyển đổi bộ lọc. Một giải pháp là chỉ cần di chuyển bộ lọc ra khỏi bất kỳ tín hiệu quan tâm nào, chẳng hạn như giữa hai tín hiệu kiểm tra của bạn, trong đó, trong trường hợp kiểm tra của bạn, có rất ít tín hiệu bị bóp méo bởi một quyết định không hoàn hảo.


0

Sử dụng

ht = fir1(40,.5,'stop');

thay vào đó, và bạn sẽ có độ suy giảm rất thấp ở F0, và độ suy giảm rất cao ở F1.

nhập mô tả hình ảnh ở đây

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.