ทำไมการสร้างแบบจำลองมากเกินไปตัวกรอง AR NLMS ที่ปรับเปลี่ยนได้จึงทำให้แหลมคมชัด


10

ฉันเพิ่งจำลองโมเดลลำดับที่สองแบบย้อนกลับอัตโนมัติที่เติมด้วยสัญญาณรบกวนสีขาวและประมาณค่าพารามิเตอร์ด้วยตัวกรองคำสั่งมาตรฐานกำลังสองน้อยที่สุดที่มีค่าเฉลี่ยกำลังสองมาตรฐาน

ในฐานะที่เป็นตัวกรองลำดับที่หนึ่งภายใต้โมเดลระบบแน่นอนการประมาณค่านั้นแปลก ตัวกรองลำดับที่สองพบการประมาณที่ดีแม้ว่าจะมีการกระโดดที่คมชัดสองครั้ง สิ่งนี้คาดหวังได้จากธรรมชาติของตัวกรอง NLMS

สิ่งที่ทำให้ฉันสับสนคือตัวกรองลำดับที่สามและสี่ พวกเขาดูเหมือนจะกำจัดการกระโดดที่คมชัดดังที่เห็นในภาพด้านล่าง ฉันไม่เห็นสิ่งที่พวกเขาจะเพิ่มเนื่องจากตัวกรองลำดับที่สองนั้นเพียงพอที่จะสร้างแบบจำลองระบบ พารามิเตอร์ที่ซ้ำซ้อนจะอยู่ที่ประมาณต่อไป0

ใครช่วยอธิบายปรากฏการณ์นี้ให้ฉันในเชิงคุณภาพได้ไหม อะไรเป็นสาเหตุของมันและเป็นที่พึงปรารถนา?

ฉันใช้ขนาด step ,ตัวอย่างและโมเดล ARโดยที่เป็นสีขาว เสียงรบกวนที่มีความแปรปรวน 1.μ=0.01104x(t)=e(t)0.9x(t1)0.2x(t2)e(t)

ป้อนคำอธิบายรูปภาพที่นี่

รหัส MATLAB สำหรับการอ้างอิง:

% ar_nlms.m
function th=ar_nlms(y,order,mu)
N=length(y);
th=zeros(order,N); % estimated parameters
for t=na+1:N
    phi = -y( t-1:-1:t-na, : );
    residue = phi*( y(t)-phi'*th(:,t-1) );
    th(:,t) = th(:,t-1) + (mu/(phi'*phi+eps)) * residue;
end

% main.m
y = filter( [1], [1 0.9 0.2], randn(1,10000) )';
plot( ar_nlms( y, 2, 0.01 )' );

2
ฉันไม่เข้าใจว่าคุณวางแผนอะไร ตัวกรองแบบไหนที่คุณกำลังจำลองด้วย NLMS - เห็นได้ชัดว่ายิ่งคุณมีพารามิเตอร์มากเท่าไหร่คุณยิ่งสามารถกรองตัวกรองได้ดีขึ้นเท่านั้น แม้ว่าพารามิเตอร์ "โฮเวอร์ประมาณ 0" ที่ไม่ได้หมายความว่าพวกเขาจะไม่ทำอะไรเลย
leftaroundabout

@ ด้านซ้าย: ฉันจำลองแบบจำลอง AR (2) ด้วยพารามิเตอร์คงที่ซึ่งหมายความว่า NLMS (2) ควรจะสามารถอธิบายระบบได้อย่างสมบูรณ์ เห็นได้ชัดว่าพารามิเตอร์พิเศษทำอะไรบางอย่างตามที่พวกเขาจัดการเพื่อลด spikes แต่ฉันสงสัยว่าทำไม - ระบบมีรูปแบบมากเกินไปซึ่งมักจะหมายถึงว่าช่วงความเชื่อมั่นสำหรับพารามิเตอร์โดยประมาณเพิ่มขึ้น
Andreas

@left: ขออภัยฉันพลาดประโยคแรกของคุณไป ฉันวางแผนค่าประมาณของพารามิเตอร์ AR ของตัวกรอง NLMS ที่ปรับเปลี่ยนตามเวลา คือจากแบบจำลองโดยประมาณสำหรับanx(t)=e(t)a1x(t1)a2x(t2)...anx(tn)n{1,2,3,4}
Andreas

NLMS ไม่ใช่รุ่น MA ขณะที่คุณพยายามประมาณรุ่น AR ใช่ไหม
จดจำ

1
@Memming: NLMS พยายามที่จะย้อนกลับโมเดล AR ดังนั้นโมเดล MA จึงเป็นสิ่งที่ถูกต้อง
Peter K.

คำตอบ:


2

สิ่งที่ดูเหมือนจะเกิดขึ้นคือเมื่อคุณเริ่มทำตัวแบบใหม่สัญญาณผิดพลาดจะกลายเป็นสีขาวน้อยลงเรื่อย ๆ

ฉันแก้ไขโค้ดของคุณเพื่อส่งสัญญาณความผิดพลาดกลับมา (ส่วนหนึ่งของresidueคำศัพท์)

พล็อตนี้แสดงค่าสัมประสิทธิ์ off-zero-lag ของxcorrข้อผิดพลาดสำหรับ order = 2 (สีน้ำเงิน), 3 (สีแดง) และ 4 (สีเขียว) อย่างที่คุณเห็นเงื่อนไขความล่าช้าแบบใกล้ถึง แต่ไม่เป็นศูนย์มีขนาดใหญ่ขึ้น

หากเราดูที่ FFT (สเปกตรัม) ของxcorrข้อผิดพลาดจากนั้นเราจะเห็นว่าเงื่อนไขความถี่ต่ำ (ซึ่งทำให้เกิดการล่องลอยขนาดใหญ่) มีขนาดเล็กลง (ข้อผิดพลาดประกอบด้วยความถี่สูงมากขึ้น)

ดังนั้นดูเหมือนว่าผลกระทบของการสร้างแบบจำลองมากเกินไปในกรณีนี้คือข้อผิดพลาดตัวกรองสูงผ่านซึ่ง (สำหรับตัวอย่างนี้) เป็นประโยชน์

ป้อนคำอธิบายรูปภาพที่นี่

ป้อนคำอธิบายรูปภาพที่นี่

function [th,err]=ar_nlms(y,order,mu)
eps = 0.000000001;
N=length(y);
th=zeros(order,N); // estimated parameters
err = zeros(1,N);
for t=order+1:N
    phi = -y( t-1:-1:t-order, : );
    err(t) = y(t)-phi'*th(:,t-1);
    residue = phi*( err(t) );
    th(:,t) = th(:,t-1) + (mu/(phi'*phi+eps)) * residue;
    size(residue)
end
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.