资源简介
学习维纳滤波原理及自适应算法时,编写的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
相关资源
- vrep-matlab机器人仿真--PUMA560机械臂目标
- 基于MATLAB GUI开发的多算发雷达恒虚警
- 数字信号处理音频FIR去噪基于MATLAB
- 改进的考虑路阻的Dijkstra算法matlab算法
- MATLAB运动目标检测代码
- MATLAB新许可文件可通用
- 含过时信息多智能体系统一致性Matl
- matlab利用PCA函数进行降维
- matlab读取hdf文件
- MATLAB-RFID-二进制树
- 基于MATLAB的车牌识别.rar
- 电网络节点电压法matlab程序
- 基于不同调制方式16QAM、64QAM、QPSKOF
- 汽车主动悬架控制器建模仿真程序代
- ADRC_TD.zip
- MIMO_DOAMIMO-雷达DOA估计中克拉美罗界
- 随机生产模拟matlab程序
- 雷达杂波瑞利分布模型MATLAB仿真
- 基于肤色的人脸检测
- 卡尔曼滤波matlab仿真程序
- 基于matlab的路面裂缝检测识别系统设
- 基于matlab的DCT变换对灰度图像进行压
- 基于MATLAB图像处理的汽车牌照识别系
- 基于matlab的神经网络dropout层
- 基于matlab的svr代码
- 使用matlab 实现DTW算法
- 基于粒子群算法的优化模型matlab程序
- 遗传算法完整MATLAB程序
- MATLAB灰色关联度代码
-
simuli
nk计数器、累加器.zip
评论
共有 条评论