LMS算法校正通道幅相误差

LMS算法校正通道幅相误差,第1张


%%      LMS自适应滤波算法
%   由于射频前端低噪放、滤波等电路的不一致性,导致相同的接收信号通过接收通道后,
%   信号幅度和相位并不相同。为此,需要对通道的幅相误差进行校正。  
clc; 
close all;
clear all;



%%               参数设置
fc=10e6;         % 信号频率
fs=10*fc;        % 采样频率
count=1024;      % 采样点数
SNR=5;           % 信噪比
t=0:1/fs:(count-1)/fs;

% LMS算法相关参数
Num_iteration=count;    % 迭代次数





%%              通道信号
%----第一种信号
dn = sqrt(10^(SNR/10))*exp(1j*2*pi*fc*t);% 期望信号
noise = 1/sqrt(2).*randn(1,count)+1j*1/sqrt(2).*randn(1,count);             % 高斯白噪声
% un = dn+noise;                      % 输入信号
un = 1.5*dn*exp(1j*80/180*pi);       % 输入信号


%%       LMS算法

% 求收敛常数
lamda_max = max(eig(un*un.'));%求解输入xn的自相关矩阵的最大特征值,A = eig(B),意为将矩阵B的特征值组成向量A
mu1 = 2*(1/lamda_max);
mu =1e-3;


%%        LMS算法
w=zeros(1,Num_iteration);
for p = 1:Num_iteration     % 保证输入延时后的信号有效,所以实际的迭代次数只有(Num_iteration-M)次,
    yn(p) = w(p)'*un(p); % 滤波器的输出信号  式(4.4.6en(p) = dn(p)-yn(p);    % 误差信号   式(4.4.7w(p+1) = w(p)+mu*un(p)*conj(en(p));% 滤波器权向量的更新方程  式(4.4.8) conj 共轭
end

%%               绘图
figure(1);
plot(t*1e6,real(dn));hold on;
plot(t*1e6,real(un));hold on;
xlabel('时间/us');ylabel('幅度');
legend('期望信号','输入信号');


figure(2);
subplot(211);
plot(t*1e6,real(dn),'-r');hold on;
plot(t*1e6,real(yn),'-b');hold on;
xlabel('时间/us');ylabel('幅度');
legend('期望信号','校正后的输出信号');
subplot(212);
plot(t*1e6,real(en),'-k');
xlabel('时间/us');ylabel('幅度');
title('误差');


figure(3);
plot(real(w),'-r');hold on;
plot(imag(w),'-b');hold on;
legend('迭代权值的实部','迭代权值的虚部');

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/797375.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-06
下一篇 2022-05-06

发表评论

登录后才能评论

评论列表(0条)

保存