Lọc thích ứng: Độ dài và độ trễ của bộ lọc tối ưu


7

Tôi đang cố gắng tìm độ dài bộ lọc tối ưu cho Lọc thích ứng, sử dụng Thuật toán RLS.

Tôi đang sử dụng thiết kế này:

Vì vậy, tín hiệu "lỗi" là tín hiệu không có nhiễu (và đó là tín hiệu mà tôi muốn).

Nếu tôi có e(n)=d(n)y(n) nhưng d(n) là tín hiệu mong muốn của tôi, tôi cần điều đó e(n)0 vì vậy tôi tìm thấy độ dài bộ lọc tối ưu (và độ trễ) bằng tiêu chí MSE, nhưng bây giờ tôi có tín hiệu mà tôi muốn là lỗi, vì vậy tôi không biết cách tìm độ dài bộ lọc tối ưu, vì tôi KHÔNG biết gì MSE làm tôi phải nhận được ở đầu ra!

Bất cứ ai có thể cho tôi biết tôi nên làm gì?

Cảm ơn!


3
Nói chung, đây có vẻ là một câu hỏi hay, nhưng sơ đồ của bạn gây nhầm lẫn với tôi. Ví dụ: bạn sẽ không bao giờ loại bỏ nhiễu băng hẹp bằng tín hiệu kết hợp chod(n)... Đây có phải là cố ý? Ngoài ra, bạn biết chức năng chuyển của hệ thống của bạnG(z)=zΔVậy tại sao bạn cần một bộ lọc thích ứng?
nhảy vào

Bộ lọc thích ứng lọc tín hiệu không tương thích với đầu vào. Khi bạn thêm độ trễ, tiếng ồn bị trì hoãn sẽ không tương thích với tiếng ồn ban đầu, nhưng độ trễ bị trì hoãns(n) vẫn tương quan với bản gốc s(n), đó là lý do tại sao tiếng ồn được lọc. Phải không? Thiết kế đó là của MIT.
Chưa được đặt tên

2
OK, tôi hiểu, nhưng để làm việc này chậm trễ Δphải đủ lớn để tín hiệu mong muốns(n)không tương thích với tín hiệu trễ ở đầu vào của bộ lọc. Trong trường hợp đó, bộ lọc sẽ dự đoán nhiễu. Lưu ý rằng đó không phải là nhiễu (như bạn đã viết trong bình luận) mà là tín hiệu mong muốn cần được giải thích với tín hiệu trễ.
Matt L.

Vâng, tôi nghĩ rằng bạn đúng. Vì vậy, tín hiệu lỗie(n)e(n)=r(n)? Phải lớn như thế nàoΔ?
Chưa được đặt tên

Không, e(n)s(n)y(n)r(n). Sự trì hoãnΔ phải được chọn sao cho tự động tương quan của tín hiệu mong muốn là (gần bằng) cho độ trễ Δ, như vậy mà s(n) trở nên không tương thích với đầu vào f(n)vào bộ lọc. Vì vậy, sự lựa chọn củaΔ phụ thuộc vào thuộc tính của s(n).
Matt L.

Câu trả lời:


4

Để có thể chọn một giá trị tối ưu cho độ trễ Δđiều quan trọng là phải hiểu cách thức hoạt động của hệ thống. Mục đích của độ trễ là để giải mã tín hiệu mong muốns(n) và thành phần tín hiệu s(nΔ)ở đầu vào của bộ lọc thích ứng. Điều này có nghĩa rằngΔ phải được chọn sao cho tự động tương quan Rss(k) của s(n) là (gần) không cho độ trễ lớn hơn Δ:

Rss(k)0,|k|>Δ

Tuy nhiên, chúng tôi không thể chọn Δ tùy ý lớn vì nhiễu trễ ở đầu vào của bộ lọc phải tương quan với nhiễu được thêm vào tín hiệu, nghĩa là tự động tương quan Rrr(k) của nhiễu vẫn phải có ý nghĩa ở độ trễ Δ, nếu không, bộ lọc thích ứng không thể dự đoán nhiễu. Nếu chúng ta có thể cho rằngr(n) là băng hẹp so với s(n), luôn luôn có thể tìm thấy một giá trị thích hợp cho Δ.

Với một giá trị thích hợp cho Δ, bộ lọc thích ứng sẽ cố gắng dự đoán nhiễu, tức là, nó sẽ cố gắng hoàn tác ảnh hưởng của độ trễ trong dải tần nơi nhiễu có các thành phần tần số đáng kể. Vì vậy, đầu ra của bộ lọc sẽ gần đúngr(n): y(n)r(n). Do đó, tín hiệu lỗi sẽ xấp xỉ tín hiệu mong muốn:e(n)s(n).

Sau khi đã chọn một giá trị cho Δ dựa trên sự tự tương quan của s(n), độ dài bộ lọc phải được chọn bằng thử và lỗi. Một bộ lọc dài sẽ cho phép triệt tiêu tốt hơn với chi phí hội tụ chậm hơn.


Câu trả lời tuyệt vời như mọi khi, Matt.
Jason R

Cảm ơn Matt, tôi đã hiểu rất nhiều thứ! Nhưng tôi vẫn có một số vấn đề. Nói rằnge(n)s(n)e(n) là cái mà tôi thấy trong Hình mà tôi đặt trên bài chính, tôi tính toán tự động tương quan là:
Rss=n=1Le(n)e(n)
nhưng tôi có một số kết quả hơi khó hiểu: với độ dài bộ lọc M=50 Tôi có:
Δ=2R=0.1950Δ=5R=0.4566Δ=10R=0.1396Δ=11R=0.5913Δ=12R=0.0588Δ=13R=0.1.9348Δ=30R=0.7577
Chưa được đặt tên

và nếu tôi lấy M=20 Tôi có
Δ=2R=0.2310Δ=5R=0.4435Δ=10R=0.9420Δ=30R=0.2.5122
Tôi không biết phải làm gì. Tôi không mong đợi những kết quả đó: S
Chưa được đặt tên

1
@Dylan: Bạn đã mong đợi điều gì và bạn đang cố gắng làm gì?
Matt L.

@MattL.: Tôi nghĩ rằng, với cùng độ dài bộ lọc, tôi sẽ có tự động tương quan nhỏ hơn khi độ trễ Δđã lớn hơn Tôi tínhe(n) từ thiết kế mà tôi đã trình bày trong bài chính và tôi đã trì hoãn tín hiệu đó trong MATLAB như thế này:
edelayed=zeros(1,length(e));for i=(Δ+1):Ledelayed(i)=e(iΔ);end
và sau đó, để tính toán tự động tương quan:
autocorr=eedelayed
Chưa được đặt tê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.