w0 = 1.0; w1 = 1.0; w2 = 1.0; w3 = 1.0; w4 = 1.0; w5 = 1.0; w6 = 1.0; w7 = 1.0; w8 = 1.0; w9 = 1.0; y_delay(1) = 0.0; for k = 1:5000 % x(k) = sin((pi()*k)/9); x(k) = randn; y(k) = sin((pi()*k)/200)+(0.2*x(k)); if k == 1 % n(k) = w0*x(k); n(k) = 0; elseif k == 2 % n(k) = (w0*x(k))+(w1*x(k-1)); n(k) = (w0*y_delay(k-1)); elseif k == 3 % n(k) = (w0*x(k))+(w1*x(k-1))+(w2*x(k-2)); n(k) = (w0*y_delay(k-1))+(w1*y_delay(k-2)); elseif k == 4 % n(k) = (w0*x(k))+(w1*x(k-1))+(w2*x(k-2))+(w3*x(k-3)); n(k) = (w0*y_delay(k-1))+(w1*y_delay(k-2))+(w2*y_delay(k-3)); elseif k == 5 % n(k) = (w0*x(k))+(w1*x(k-1))+(w2*x(k-2))+(w3*x(k-3))+(w4*x(k-4)); n(k) = (w0*y_delay(k-1))+(w1*y_delay(k-2))+(w2*y_delay(k-3))+(w3*y_delay(k-4)); elseif k == 6 n(k) = (w0*y_delay(k-1))+(w1*y_delay(k-2))+(w2*y_delay(k-3))+(w3*y_delay(k-4))+(w4*y_delay(k-5)); elseif k == 7 n(k) = (w0*y_delay(k-1))+(w1*y_delay(k-2))+(w2*y_delay(k-3))+(w3*y_delay(k-4))+(w4*y_delay(k-5))+(w5*y_delay(k-6)); elseif k == 8 n(k) = (w0*y_delay(k-1))+(w1*y_delay(k-2))+(w2*y_delay(k-3))+(w3*y_delay(k-4))+(w4*y_delay(k-5))+(w5*y_delay(k-6))+(w6*y_delay(k-7)); elseif k == 9 n(k) = (w0*y_delay(k-1))+(w1*y_delay(k-2))+(w2*y_delay(k-3))+(w3*y_delay(k-4))+(w4*y_delay(k-5))+(w5*y_delay(k-6))+(w6*y_delay(k-7))+(w7*y_delay(k-8)); elseif k == 10 n(k) = (w0*y_delay(k-1))+(w1*y_delay(k-2))+(w2*y_delay(k-3))+(w3*y_delay(k-4))+(w4*y_delay(k-5))+(w5*y_delay(k-6))+(w6*y_delay(k-7))+(w7*y_delay(k-8))+(w8*y_delay(k-9)); else n(k) = (w0*y_delay(k-1))+(w1*y_delay(k-2))+(w2*y_delay(k-3))+(w3*y_delay(k-4))+(w4*y_delay(k-5))+(w5*y_delay(k-6))+(w6*y_delay(k-7))+(w7*y_delay(k-8))+(w8*y_delay(k-9))+(w9*y_delay(k-10)); end e(k) = y(k) - n(k); if k == 1 w0 = w0; elseif k == 2 w0 = w0 + 0.01*e(k)*y_delay(k-1); % w1 = w1 + 0.01*e(k)*y_delay(k-2); elseif k == 3 w0 = w0 + 0.01*e(k)*y_delay(k-1); w1 = w1 + 0.01*e(k)*y_delay(k-2); % w2 = w2 + 0.01*e(k)*y_delay(k-3); elseif k == 4 w0 = w0 + 0.01*e(k)*y_delay(k-1); w1 = w1 + 0.01*e(k)*y_delay(k-2); w2 = w2 + 0.01*e(k)*y_delay(k-3); % w3 = w3 + 0.01*e(k)*y_delay(k-4); elseif k == 5 w0 = w0 + 0.01*e(k)*y_delay(k-1); w1 = w1 + 0.01*e(k)*y_delay(k-2); w2 = w2 + 0.01*e(k)*y_delay(k-3); w3 = w3 + 0.01*e(k)*y_delay(k-4); % w4 = w4 + 0.01*e(k)*y_delay(k-5); elseif k == 6 w0 = w0 + 0.01*e(k)*y_delay(k-1); w1 = w1 + 0.01*e(k)*y_delay(k-2); w2 = w2 + 0.01*e(k)*y_delay(k-3); w3 = w3 + 0.01*e(k)*y_delay(k-4); w4 = w4 + 0.01*e(k)*y_delay(k-5); elseif k == 7 w0 = w0 + 0.01*e(k)*y_delay(k-1); w1 = w1 + 0.01*e(k)*y_delay(k-2); w2 = w2 + 0.01*e(k)*y_delay(k-3); w3 = w3 + 0.01*e(k)*y_delay(k-4); w4 = w4 + 0.01*e(k)*y_delay(k-5); w5 = w5 + 0.01*e(k)*y_delay(k-6); elseif k == 8 w0 = w0 + 0.01*e(k)*y_delay(k-1); w1 = w1 + 0.01*e(k)*y_delay(k-2); w2 = w2 + 0.01*e(k)*y_delay(k-3); w3 = w3 + 0.01*e(k)*y_delay(k-4); w4 = w4 + 0.01*e(k)*y_delay(k-5); w5 = w5 + 0.01*e(k)*y_delay(k-6); w6 = w6 + 0.01*e(k)*y_delay(k-7); elseif k == 9 w0 = w0 + 0.01*e(k)*y_delay(k-1); w1 = w1 + 0.01*e(k)*y_delay(k-2); w2 = w2 + 0.01*e(k)*y_delay(k-3); w3 = w3 + 0.01*e(k)*y_delay(k-4); w4 = w4 + 0.01*e(k)*y_delay(k-5); w5 = w5 + 0.01*e(k)*y_delay(k-6); w6 = w6 + 0.01*e(k)*y_delay(k-7); w7 = w7 + 0.01*e(k)*y_delay(k-8); elseif k == 10 w0 = w0 + 0.01*e(k)*y_delay(k-1); w1 = w1 + 0.01*e(k)*y_delay(k-2); w2 = w2 + 0.01*e(k)*y_delay(k-3); w3 = w3 + 0.01*e(k)*y_delay(k-4); w4 = w4 + 0.01*e(k)*y_delay(k-5); w5 = w5 + 0.01*e(k)*y_delay(k-6); w6 = w6 + 0.01*e(k)*y_delay(k-7); w7 = w7 + 0.01*e(k)*y_delay(k-8); w8 = w8 + 0.01*e(k)*y_delay(k-9); else w0 = w0 + 0.01*e(k)*y_delay(k-1); w1 = w1 + 0.01*e(k)*y_delay(k-2); w2 = w2 + 0.01*e(k)*y_delay(k-3); w3 = w3 + 0.01*e(k)*y_delay(k-4); w4 = w4 + 0.01*e(k)*y_delay(k-5); w5 = w5 + 0.01*e(k)*y_delay(k-6); w6 = w6 + 0.01*e(k)*y_delay(k-7); w7 = w7 + 0.01*e(k)*y_delay(k-8); w8 = w8 + 0.01*e(k)*y_delay(k-9); w9 = w9 + 0.01*e(k)*y_delay(k-10); end y_delay(k) = y(k); end subplot(3,1,1) plot (y, 'DisplayName', 'y', 'YDataSource', 'y'); figure(gcf); xlabel ('Sample Instant'); ylabel ('Y (Input signal with noise)'); subplot(3,1,2) plot (e, 'DisplayName', 'e', 'YDataSource', 'e'); figure(gcf); xlabel ('Sample Instant'); ylabel ('E (Output signal)'); subplot(3,1,3) plot (n, 'DisplayName', 'e', 'YDataSource', 'e'); figure(gcf); xlabel ('Sample Instant'); ylabel ('N (Filter Output)');