资源简介
学习维纳滤波原理及自适应算法时,编写的SD算法和LMS算法在统一条件下的仿真,有画SD算法的学习曲线和权值变化曲线,LMS算法的多次实验下的学习曲线和权系数更新曲线。参考教材:现代数字信号处理及其应用(何子述、夏威)

代码片段和文件信息
clc
clear all
%******************************************%
%*********Speech channel model*************%
%******************************************%
%输入参数:
% data 激励信号序列序列(列向量)
%输出参数
% speech_signal 输出语音信号(列向量)
%初始化
data_average=0;%激励信号均值
data_variance=0.27;%激励信号方差
iterations=500;%迭代次数
data=normrnd(data_averagesqrt(data_variance)1iterations).‘;%产生白噪声序列
%画图(白噪声data)
figure(1)
subplot(311)
plot(data‘y‘);
grid on
title(sprintf(‘N(%d%d)分布的白噪声序列‘data_averagedata_variance));
subplot(312)
R_data=xcorr(data‘‘);
plot(R_data‘m‘);
grid on
title(sprintf(‘N(%d%d)分布的噪声序列自相关函数‘data_averagedata_variance));
subplot(313)
periodogram(data[]1024250);
title(sprintf(‘N(%d%d)分布的噪声序列功率谱密度‘data_averagedata_variance));
%结束画图
speech_signal = filter(1[10.8458]data);
%画图
figure(2)
subplot(211)
plot(speech_signal‘m‘);
title(‘语音信号序列‘);
axis([-10 510 -5 5]);
%结束画图
%******************************************%
%******Transmission signal model***********%
%******************************************%
%输入参数:
% speech_signal 激励信号序列序列(列向量)
% noise 信道中的加性噪声(列向量)
%输出参数
% data_in_fiter 输出经过信道的带噪语音信号(列向量)
noise_average=0;%噪声均值
noise_variance=0.1;%噪声方差
noise=normrnd(noise_averagesqrt(noise_variance)1iterations).‘;
data_in_fiter = filter(1[1-0.9458]speech_signal)+noise;
%画图
subplot(212)
plot(data_in_fiter‘r‘);
title(‘输出经过信道的带噪语音信号序列‘);
axis([-10 510 -5 5]);
%结束画图
%******************************************%
%*************Least Mean Square************%
%******************************************%
%输入参数:
% data_in_fiter 滤波器输入信号序列(列向量)
% expct_data 所期望的响应序列(列向量)
% M_rank 滤波器阶数(标量)
% u_step 滤波器步长(标量)
%输出参数
% weight 滤波器权值矩阵(矩阵 M_rank*length(data_in_fiter))
% 设迭代次数即为其输入序列长度
% erro 误差序列(length(data_in_fiter)*i)
% real_data 实际输出序列
% mse 均方误差
%输入参数赋值
expct_data = speech_signal;
M_rank = 2;
u_step = 0.02;
%初始化
n = 0;%迭代次数
weight = zeros(M_rankiterations);%权重
erro = zeros(1iterations);%误差
data_instantaneous = zeros(1iterations+M_rank-1).‘;%输入序列瞬时值
real_data = zeros(1iterations);%期望信号估计,实际输出的序列
mse = zeros(1iterations);%均方误差
erro(1) = expct_data(1) - real_data(1);
data_instantaneous(1:iterations:) = flipud(data_in_fiter);%flipud 实现倒序
mse(1) = erro(1)^2;
for n = 1:(iterations-1)
data_temporary = data_instantaneous((iterations+1-n):(iterations+M_rank-n));%临时
weight(:n+1) = weight(:n) + u_step*data_temporary*conj(erro(n));
data_temporary = data_instantaneous((iterations-n):(iterations+M_rank-n-1));%临时
real_data(n+1) = weight(:n+1)‘*data_temporary;
erro(n+1) = expct_data(n+1) - real_data(n+1);
mse(n+1) = erro(n+1)^2;
end
%画图
figure(3)
plot(mse‘r‘);
title(‘LMS算法一次实验学习曲线‘);
xlabel(‘迭代次数n‘)
ylabel
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2019-10-31 20:34 SD&LMS\
文件 4351 2019-10-29 15:02 SD&LMS\least_mean_square.m
文件 6172 2019-10-31 20:25 SD&LMS\least_mean_square_ex.m
文件 1460 2019-10-31 20:30 SD&LMS\LMS.m
文件 3196 2019-10-31 19:18 SD&LMS\steepest_descent_method.m
相关资源
- 串行级联cpm系统MATLAB仿真
- matlab_OFDM调制解调(来自剑桥大学)
- Matlab路面裂缝识别69319
- 高灵敏度GPS接收机MATLAB仿真,附捕获
- 基于MATLAB的质点弹道计算与外弹道优
- 阵列天线的matlab仿真
- MATLAB 经典程序源代码大全
- MATLAB小波软阈值去噪代码33473
- 天线阵的波束形成在MATLAB仿真程序及
- 非线性SVM算法-matlab实现
- 《MATLAB 智能算法超级学习手册》-程序
- 组合导航matlab程序
- 读取txt文件内容matlab代码实现
- Matlab实现基于相关的模板匹配程序
- matlab优化工具箱讲解
- 基于MATLAB的快速傅里叶变换
- 光纤传输中的分布傅立叶算法matlab实
- 基于matlab的图像处理源程序
- matlab 椭圆拟合程序
- 算术编码解码matlab源代码
- optical_flow 光流法 matlab 实现程序
- 引导图像滤波器 Matlab实现
- 分形几何中一些经典图形的Matlab画法
- OFDM系统MATLAB仿真代码
- SVM工具箱(matlab中运行)
- 图像小波变换MatLab源代码
- LU分解的MATLAB实现
- 冈萨雷斯数字图像处理matlab版(第三
- 替代数据法的matlab程序
- 用matlab实现的多站定位系统性能仿真
评论
共有 条评论