请问您可不可以提供一个LMP算法,也就是p范数LMS算法的matlab程序呀?我自己编的没法收敛…

 我来答
匿名用户
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');
追问
您好,请问可否留个联系方式或是上传一份.m文件呀?把这段程序敲到matlab一直报错…
绿知洲
2024-11-13 广告
LMS噪声测试软件,全称LMS Test.Lab,是比利时LMS公司开发的专业振动噪声试验解决方案。它集数据采集、数字信号处理、结构试验、旋转机械分析、声学和环境试验等功能于一体,为振动噪声测试提供了全面的解决方案。LMS Test.Lab... 点击进入详情页
本回答由绿知洲提供
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式