Làm cách nào tôi có thể thiết kế các bộ lọc nội suy Nyquist với thuật toán Công viên-McClellan?


17

Chúng ta có thể dễ dàng thiết kế các bộ lọc nội suy tuân theo các ràng buộc miền tần số nhất định bằng thuật toán Công viên-McClellan . Tuy nhiên, không rõ ràng ngay lập tức làm thế nào để thực thi các ràng buộc miền thời gian; đặc biệt, tôi quan tâm đến việc tạo các bộ lọc Nyquist. Vì vậy, nếu tôi quá mức theo hệ số N, tôi muốn bộ lọc có các giao điểm 0 tại kN, đối với số nguyên khác không k(điều này đảm bảo rằng các mẫu đầu vào cho bộ nội suy của tôi sẽ xuất hiện trong chuỗi đầu ra).

Tôi đã thấy Harris 1 nói về một kỹ thuật thiết kế các bộ lọc nửa băng tần, tức là trường hợp đặc biệt N=2. Có một giải pháp chung cho việc này? (Tôi biết rằng chúng ta có thể dễ dàng thiết kế các bộ lọc bằng phương pháp cửa sổ, nhưng điều đó không mang lại cho chúng ta quyền kiểm soát tương tự.)

[1] Xử lý tín hiệu đa biến cho các hệ thống truyền thông , trang 208-209



Thật không may, một vài tài liệu tham khảo tài liệu được trả tiền, không may: F. Mintzer, Cameron Trên các bộ lọc FIR nửa băng tần, băng tần thứ ba và băng tần Nth và thiết kế của chúng, xông IEEE Trans. Acoust., Quá trình phát biểu và tín hiệu., Tập. ASSP-30, không. 5, trang 734 Mạnh738, tháng 10 năm 1982. T. Saramaki và Y. Neuvo, Hồi Một lớp các bộ lọc FIR Nyquist (băng tần thứ N) với nhiễu không xen kẽ 0, IEEE IEEE Trans. Mạch & Syst., Tập. CAS-34, không. 10, trang 1182 Từ1190, tháng 10 năm 1987.
Olli Niemitalo

Và bài báo này có vẻ rất quan trọng: X. Zhang, " Thiết kế bộ lọc pha tuyến tính FIR băng tần Mth ", Hội nghị quốc tế lần thứ 19 năm 2014 về Xử lý tín hiệu số , Hồng Kông, 2014, trang 7-11. doi: 10.1109 / ICDSP.2014.6900776
Olli Niemitalo

Câu trả lời:


9

Một phương pháp thiết kế, mặc dù chỉ giới hạn ở hai lũy thừa, sẽ bắt đầu với một bộ lọc nửa băng tần, chèn các số 0 vào nhau (tạo bản sao quang phổ), sau đó kết hợp nó với bộ lọc nửa băng thứ hai có dải chuyển tiếp rộng hơn. Lặp lại quá trình cho đến khi bạn đạt được sức mạnh cần thiết là 2.

Dưới đây là một ví dụ tạo bộ lọc thông thấp với Fc = fs / 8 và 0 giao nhau sau mỗi 4 mẫu:

b0=remez(34,[0 .45 .55 1],[1 1 0 0])';
b1=remez(6,[0 .25 .75 1],[1 1 0 0])';
b0up = zeros(1,2*length(b0)-1);
b0up(1:2:end) = b0;
B0up=freqz(b0up);
b2 = conv(b0up,b1);  % length = 34*2+1 + 6 = 75 coefficients

So sánh các bộ lọc ví dụ


Tôi sẽ đề nghị điều tương tự.
Phonon

5
+1 cho biểu đồ tuyệt vời. tôi sẽ LUÔN +1 đồ thị tuyệt vời bởi vì chúng tốt hơn nhiều so với những giải thích dài dòng ... thường nhàm chán / tồi tệ.
Trevor Boyd Smith

5

Một phương pháp để có được giao điểm không mong muốn của bạn là thực hiện một thiết kế lai.

Bắt đầu với bộ lọc nửa băng tần Công viên-McLellan / Remez có trọng lượng tương đương với băng thông và băng chặn. Vì nó là bộ lọc nửa dải , nó sẽ có các số không ở các mẫu thay thế. Sau đó, bạn có thể nội suy miền thời gian theo sin (x) / x bằng cách không nhồi trong miền tần số.

Ví dụ: tạo bộ lọc thông thấp fs / 12 với giao điểm 0 mỗi 6 mẫu.

% prototype Remez filter 
taps=18; 
b = remez(taps,[0 .4 .6 1],[1 1 0 0])';  
% force halfband condition of zeros at every other sample
b(2:2:end)=0;  b(taps/2+1)=.5; 

% zero pad the time domain to give the Gibbs ripple some deadspace
B=fft(b,4*(taps+1) ); 
% split the frequency domain into two halves, split the Nyquist bin
Blo = [ B(1:length(B)/2) 0.5*B(length(B)/2+1) ]; 
Bhi = [ 0.5*B(length(B)/2+1) B(length(B)/2+2:length(B))  ]; 

% insert padding at pi to increase size 3x
Bpad = [ Blo zeros(1,3*length(B)-length(Blo)-length(Bhi) ) Bhi];  
bint = real( ifft(Bpad) ); % this has zeros every 6 samples

Bộ lọc kết quả gần với, nhưng không hoàn toàn tốt như nguyên mẫu về gợn sóng băng thông / băng thông. Phép nội suy sin (x) / x giới thiệu một số chuông mức thấp. Bạn có thể cần phải thiết kế lại bộ lọc nguyên mẫu một chút để có được mức suy giảm cần thiết trong bộ lọc nội suy.


1
+1: Ý tưởng thú vị; Tôi cần suy nghĩ về điều này một chút. Hai câu hỏi xảy ra với tôi, mặc dù. Đầu tiên, có an toàn không khi nói rằng chúng ta có thể dịch các ràng buộc thiết kế đẳng tích của mình sang bộ lọc nửa băng chỉ bằng cách chia tỷ lệ? Thứ hai, còn giá trị lẻ của N thì sao?
Oliver Charlesworth

Các giá trị lẻ của N có thể được xử lý bằng cách xác định FIR chẵn bằng 2. ví dụ: nếu bạn muốn số 0 cứ sau 7 mẫu, hãy thiết kế một cây thông có số 0 cứ sau 14, sau đó xác định để bạn giữ lại số không. Nửa trên của phổ sẽ được đặt bí danh, nhưng sidelobes tích hợp có thể không đáng kể trong thực tế.
Mark Borgerding
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.