📄 singlefreqcancel.m
字号:
function SingleFreqCancel
clear all;
close all;
clc;
test_time=50;
step_size=0.05;
l=100;
T=16;
M=2;
average_weight=zeros(l,M);
average_mean_sqr_err=zeros(l,1);
average_err=zeros(l,1);
dot_num=1:l;
dest=2*cos(2*pi*dot_num/T);
phi=2*pi*rand(1,test_time);
for t=1:test_time
input_signal=sin(2*pi*dot_num/T+phi(t));%+0.1*randn(1,l);
weight=zeros(l,M);
mean_sqr_err=zeros(l,1);
err=zeros(l,1);
for k=2:l-1
output(k)=weight(k,:)*input_signal(k:-1:k-M+1)';
err(k)=dest(k)-output(k);%weight(k,:)*input_signal(k:-1:k-1)';
weight(k+1,:)=weight(k,:)+step_size*err(k)*input_signal(k:-1:k-1);%%%%%%
mean_sqr_err(k)=err(k)*err(k);
end
average_weight=average_weight+weight;
average_mean_sqr_err=average_mean_sqr_err+mean_sqr_err;
average_err=average_err+err;
end
average_weight=average_weight/test_time;
average_mean_sqr_err=average_mean_sqr_err/test_time;
average_err=average_err/test_time;
% % Plot results
figure(1);
plot(average_weight);
figure(2);
%semilogy(average_mean_sqr_err);
plot(average_mean_sqr_err);
figure(3)
subplot(221);
plot(input_signal);axis([0 l -2.5 2.5]);
title('输入input_signal');
%hold on;
subplot(222);
plot(output);axis([0 l -2.5 2.5]);
title('输出output')';
subplot(223);
plot(dest);
%hold on;
figure(4)
plot(average_err);axis([0 l -2.5 2.5]);
%hold on;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -