1.完整项目描述和程序获取
>面包多安全交易平台:https://mbd.pub/o/bread/Y5mcm5Zq
>如果链接失效,可以直接打开本站店铺搜索相关店铺:
>如果链接失效,程序调试报错或者项目合作也可以加微信或者QQ联系。
2.部分仿真图预览
3.算法概述
DPD是数字预失真的首字母缩写,许多射频(RF)工程师、信号处理爱好者和嵌入式软件开发人员都熟悉这一术语。DPD在蜂窝通信系统中随处可见,使功率放大器(PA)能够有效地为天线提供最大功率。随着5G使基站中的天线数量增加,频谱变得更加拥挤,DPD开始成为一项关键技术,支持开发经济高效且符合规格要求的蜂窝系统。
4.部分源码
................
load PA_OUT_-3dbm.txt
Xn =[PA_OUT__3dbm(1:2^13,1) + sqrt(-1)*PA_OUT__3dbm(1:2^13,2)]';
%original input
% Xn = 0.4*signal(1:L)/max(abs(signal(1:L)));
Xn0 = Xn;
m = length(Xn);
figure;
%%
%论文DPD
%w(.)This band-limiting function can be a linear filter
K = 127;
Wn = [0.36,0.7];%修改0.1的值,获得不同情况下的band limit效果
w = fir1(K,Wn,'stop');
K2 = 0;
w2 = [1,1];
%计算C_Lx1,Volterra kernel of the system
G_BL=[ 1.0513+j*0.0904,-0.0542-j*0.2900,-0.9657-j*0.7028,...
-0.0680-j*0.0023, 0.2234+j*0.2317,-0.2451-j*0.3735,...
0.0289-j*0.0054,-0.0621-j*0.0932, 0.1229+j*0.1508];
U_Nx1 = Xn;
[psdu,freq] = func_psd(U_Nx1,m,ts,Scal);
plot(freq/1e6,psdu,'b','linewidth',2);
grid on
hold on
%is the expected inverse output matrix generated from the PA input (the output of the predistorter) u~,
%u~根据公式22计算得到。
for ii = 1:3
if ii == 1
U = func_volterra_Matrix(Xn,w,G_BL,K,Ns);
Out = func_volterra1(U,w2,G_BL,K2,Ns);
else
U = func_volterra_Matrix(Xn,w,Cest,K,Ns);
Out = func_volterra1(U,w2,Cest,K2,Ns);%构造Y,LS estimate
end
%公式26
ya = (abs(Out.^0)).*Out;
yb = (abs(Out.^2)).*Out;
yc = (abs(Out.^4)).*Out;
Y1 = [ya(3:m);yb(3:m);yc(3:m);ya(2:m-1);yb(2:m-1);yc(2:m-1);ya(1:m-2);yb(1:m-2);yc(1:m-2)];
Y2 = conj(Y1');
Cest = inv(Y2.'*Y2)*Y2.'*U(3:m).';
Xn = func_volterra1(U_Nx1,w,Cest,K,Ns);
end
%预失真处理
Yn2 = func_volterra1(Xn0,w,Cest,K,Ns);
%通过功放
U_Nx2 = func_volterra0(Yn2,w,G_BL,K,Ns);
..........................
01_144m