Lọc 50Hz bằng bộ lọc notch trong MATLAB


10

Tôi đã đọc rất nhiều về điều này, nhưng chưa thể ghép mọi thứ thành công, vì vậy tôi đang tìm kiếm sự giúp đỡ.

Tôi cần lọc 50 Hz từ một tín hiệu. Có vẻ như các tùy chọn tốt nhất là bộ lọc notch hoặc bộ lọc LMS, nhưng tôi không có bản sao của tiếng ồn nên bộ lọc notch dường như là lựa chọn tốt nhất.

Tôi không cần tần số chuẩn hóa, vì tôi biết tần số lấy mẫu (16kHz) và thời lượng là 30 giây. Băng thông có thể khá chặt chẽ, 49,5Hz ~ 50,5Hz sẽ ổn.

Có vẻ như tôi cần sử dụng kết hợp filteriirnotch, nhưng tôi không hoàn toàn chắc chắn làm thế nào.

Nếu ai đó có thể mang tất cả lại với nhau, tôi sẽ đánh giá rất cao nó. Cảm ơn.


Tôi muốn hỏi làm thế nào mô phỏng bộ lọc tự động trên giảm xóc / redaman ???

Cách xác định 'x' trong chương trình trên (trong đó 'x' là đầu vào tín hiệu) ... cảm ơn

Câu trả lời:


14

Tôi không chắc iirnotch làm gì, nhưng đây là cách thiết kế bộ lọc notch bằng tay.

fs = 20000;             % sampling rate
f0 = 50;                % notch frequency
fn = fs/2;              % Nyquist frequency
freqRatio = f0/fn;      % ratio of notch freq. to Nyquist freq.

notchWidth = 0.1;       % width of the notch

% Compute zeros
notchZeros = [exp( sqrt(-1)*pi*freqRatio ), exp( -sqrt(-1)*pi*freqRatio )];

% Compute poles
notchPoles = (1-notchWidth) * notchZeros;

figure;
zplane(notchZeros.', notchPoles.');

b = poly( notchZeros ); %  Get moving average filter coefficients
a = poly( notchPoles ); %  Get autoregressive filter coefficients

figure;
freqz(b,a,32000,fs)

% filter signal x
y = filter(b,a,x);

Đó chính xác là những gì tôi đang tìm kiếm, cảm ơn bạn.

Đơn giản và thanh lịch. Tôi hiểu rằng notchWidth càng nhỏ, chiều rộng của notch sẽ càng nhỏ, nhưng notchWidth có liên quan đến một lượng cụ thể không?
Lolo

@Lolo Tôi không nghĩ thế. Tôi chỉ chọn nó vì nó có vẻ là một con số thuận tiện.
Phonon

7

Bạn chỉ có thể gõ trợ giúp iirnotch và sau đó xem ví dụ sau:

% Design a filter with a Q-factor of Q=35 to remove a 60 Hz tone from 
% system running at 300 Hz.
Wo = 60/(300/2);  BW = Wo/35;
[b,a] = iirnotch(Wo,BW);  

Nếu bạn thay thế 60 bằng 50 Hz và sau đó làm:

Y = filter(b,a,X)

Nó sẽ hoạt động (với X dữ liệu của bạn)

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.