请问您可不可以提供一个LMP算法,也就是p范数LMS算法的matlab程序呀?我自己编的没法收敛…
1个回答
2016-04-01
展开全部
%% 初始化
clc,clear all;
mu=0.05; % 步长
N=16; % 信道时域系数个数
input_signal_variance=1; % 输入信号方差
noise_variance=10^-3; % 噪声方差
inter=500; % 迭代次数分别为500
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%前500次迭代
w=zeros(N,1); % 初始时刻,稀疏信道脉冲响应
w_initial=w;
w_initial(5,1)=1; % 第5个抽头值为1
w_opt=w_initial; % 记录所要得到的稀疏系数向量w~(n),便于求MSD,MSE
%% 产生零均值,方差为1/10^-3的高斯噪声x(n)和v(n)
% 产生高斯分布的N*1的输入信号x(n)
b=randn(N,1);
b=b/std(b);
b=b-mean(b);
c=0;
d=sqrt(input_signal_variance);
x=c+d*b;
% 产生高斯分布的噪声v(n)
t=randn(inter_3,1);
t=t/std(t);
t=t-mean(t);
c=0;
f=sqrt(noise_variance);
v=c+f*t;
%% 未迭代
sum=0;
MSD=;
inter=0;
for n=1:N %求MSD
error=(abs(w(n)-w_opt(n)))^2;
sum=sum+error;
end
MSD(inter+1)=sum;
%% 开始迭代--LMS
for inter=1:inter
y=w'*x+v(inter); % 输出信号y(n)
e=w_opt'*x-y; % 误差
w=w+mu*e*x; % 更新公式
sum=0;
for n=1:N %求MSD
error=(abs(w(n)-w_opt(n)))^2;
sum=sum+error;
end
MSD(inter+1)=sum;
end
inter=0:inter;
plot(inter,MSD);
axis();
grid on;
xlabel('interation');
ylabel('MSD');
clc,clear all;
mu=0.05; % 步长
N=16; % 信道时域系数个数
input_signal_variance=1; % 输入信号方差
noise_variance=10^-3; % 噪声方差
inter=500; % 迭代次数分别为500
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%前500次迭代
w=zeros(N,1); % 初始时刻,稀疏信道脉冲响应
w_initial=w;
w_initial(5,1)=1; % 第5个抽头值为1
w_opt=w_initial; % 记录所要得到的稀疏系数向量w~(n),便于求MSD,MSE
%% 产生零均值,方差为1/10^-3的高斯噪声x(n)和v(n)
% 产生高斯分布的N*1的输入信号x(n)
b=randn(N,1);
b=b/std(b);
b=b-mean(b);
c=0;
d=sqrt(input_signal_variance);
x=c+d*b;
% 产生高斯分布的噪声v(n)
t=randn(inter_3,1);
t=t/std(t);
t=t-mean(t);
c=0;
f=sqrt(noise_variance);
v=c+f*t;
%% 未迭代
sum=0;
MSD=;
inter=0;
for n=1:N %求MSD
error=(abs(w(n)-w_opt(n)))^2;
sum=sum+error;
end
MSD(inter+1)=sum;
%% 开始迭代--LMS
for inter=1:inter
y=w'*x+v(inter); % 输出信号y(n)
e=w_opt'*x-y; % 误差
w=w+mu*e*x; % 更新公式
sum=0;
for n=1:N %求MSD
error=(abs(w(n)-w_opt(n)))^2;
sum=sum+error;
end
MSD(inter+1)=sum;
end
inter=0:inter;
plot(inter,MSD);
axis();
grid on;
xlabel('interation');
ylabel('MSD');
追问
您好,请问可否留个联系方式或是上传一份.m文件呀?把这段程序敲到matlab一直报错…
绿知洲
2024-11-13 广告
2024-11-13 广告
LMS噪声测试软件,全称LMS Test.Lab,是比利时LMS公司开发的专业振动噪声试验解决方案。它集数据采集、数字信号处理、结构试验、旋转机械分析、声学和环境试验等功能于一体,为振动噪声测试提供了全面的解决方案。LMS Test.Lab...
点击进入详情页
本回答由绿知洲提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询