作业帮 > 综合 > 作业

请高手帮我讲解这个MATLAB程序!急用!能看懂一点的也行!谢谢啊!

来源:学生作业帮 编辑:灵鹊做题网作业帮 分类:综合作业 时间:2024/04/30 21:56:54
请高手帮我讲解这个MATLAB程序!急用!能看懂一点的也行!谢谢啊!
clear all
close all
hold off%系统信道权数
sysorder = 5 ;%抽头数
N=1000;%总采样次数
inp = randn(N,1);%产生高斯随机系列
n = randn(N,1);
[b,a] = butter(2,0.25); %巴特沃斯低通滤波器
Gz = tf(b,a,-1);%逆变换函数
h= [0.0976;0.2873;0.3360;0.2210;0.0964;];%信道特性向量
y = lsim(Gz,inp);%加入噪声
a = n * std(y)/(10*std(n));%噪声信号
d = y + n;%期望输出信号
totallength=size(d,1);%步长
N=60 ; %60节点作为训练序列
%算法的开始
w = zeros ( sysorder , 1 ) ;%初始化
for n = sysorder : N
u = inp(n:-1:n-sysorder+1) ;% u的矩阵
y(n)= w' * u;%系统输出
e(n) = d(n) - y(n) ;%误差
if n < 20
mu=0.32;
else
mu=0.15;
end
w = w + mu * u * e(n) ;%迭代方程
end
%检验结果
for n = N+1 : totallength
u = inp(n:-1:n-sysorder+1) ;
y(n) = w' * u ;
e(n) = d(n) - y(n) ;%误差
end
hold on
plot(inp)
title('随机序列') ;
xlabel('样本')
figure
plot(y,'r')
title('噪声信号') ;
xlabel('样本')
figure
plot(d)
title('系统输出') ;
xlabel('叠加后的信号')
ylabel('实际输出')
figure
semilogy((abs(e))) ;% e的绝对值坐标
title('误差曲线') ;
xlabel('样本')
ylabel('误差矢量')
请高手帮我讲解这个MATLAB程序!急用!能看懂一点的也行!谢谢啊!
sysorder = 5 ;%抽头数
N=1000;%总采样次数
inp = randn(N,1);%产生高斯随机系列
n = randn(N,1);
[b,a] = butter(2,0.25); %巴特沃斯低通滤波器
Gz = tf(b,a,-1);%逆变换函数
h= [0.0976;0.2873;0.3360;0.2210;0.0964;];%信道特性向量
y = lsim(Gz,inp);%加入噪声
a = n * std(y)/(10*std(n));%噪声信号
d = y + n;%期望输出信号
totallength=size(d,1);%步长
N=60 ; %60节点作为训练序列
上面这些是定义滤波参数
w = zeros ( sysorder ,1 ) ;%初始化
for n = sysorder :N
u = inp(n:-1:n-sysorder+1) ;% u的矩阵
y(n)= w' * u;%系统输出
e(n) = d(n) - y(n) ;%误差
if n < 20
mu=0.32;
else
mu=0.15;
end
w = w + mu * u * e(n) ;%迭代方程
end
这是迭代滤波
%检验结果
for n = N+1 :totallength
u = inp(n:-1:n-sysorder+1) ;
y(n) = w' * u ;
e(n) = d(n) - y(n) ;%误差
end
这是定义输出
最后的就是输出图形了.
上面这些是对高斯随机信号进行滤波的程序,
对5之前的信号取样,用这个信号对1000以内的信号滤波.
我是望文生义啊,见谅,不专业.
实际上我感觉滤波怪高深的,
我用的另外一个东西和这个蛮像.