论文的方向和内容了主要是考虑多个模型和算法的比较.docx
《论文的方向和内容了主要是考虑多个模型和算法的比较.docx》由会员分享,可在线阅读,更多相关《论文的方向和内容了主要是考虑多个模型和算法的比较.docx(19页珍藏版)》请在冰点文库上搜索。
![论文的方向和内容了主要是考虑多个模型和算法的比较.docx](https://file1.bingdoc.com/fileroot1/2023-6/24/5ecc8002-56a1-4b78-a8e1-288fc59379b4/5ecc8002-56a1-4b78-a8e1-288fc59379b41.gif)
论文的方向和内容了主要是考虑多个模型和算法的比较
由于和老板沟通了一下,那么就可以确定下面论文的方向和内容了。
主要是考虑多个模型和算法的比较,和采用不同的模型进行预失真的比较,并总结这些方法的共性和个性。
文档的后面是论文前的一些研究工作:
、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、
、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、
实测的B3G功放数据AMAMAMPM特性
Matlab程序
%-----FortheAMAMandAMPM-----
loadCdmatimeV2.mat
figure;
scatter(abs(in),abs(out),'r.');
gridon
title('theAM/AMCharacteristic');
xlabel('theNormalizedInputPower');
ylabel('theNormalizedOutputPower');
figure;
phase=-angle(in)*180/pi+angle(out)*180/pi;
scatter(abs(in),phase,'r.')
gridon
title('theAM/PMCharacteristic');
xlabel('theNormalizedInputPower');
ylabel('theOutputPhaseShift');
实测功放数据的频谱特性
Matlab程序:
Fs=1e7;
h=spectrum.periodogram('gauss');
Hpsd=psd(h,in(1:
8000),'Fs',Fs,'SpectrumType','twosided','NFFT',2048,'Centerdc',true);
Hpsd1=psd(h,out(1:
8000),'Fs',Fs,'SpectrumType','twosided','NFFT',2048,'Centerdc',true);
plot(Hpsd)
holdon
plot(Hpsd1)
gridoff
、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、
、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、
Saleh建模:
Matlab程序:
%-----Salehmodelestimated-----
%usecftooltoanalysisthecurvefit.
%It'sveryconvinient.
%Generalmodel:
Amplitude
%f(x)=a*x/(1+b*x*x)
%Coefficients(with95%confidencebounds):
%a=1.105(1.102,1.108)
%b=0.4286(0.4232,0.434)
%SSE:
1.107
%R-square:
0.9951
%AdjustedR-square:
0.9951
%RMSE:
0.01646
%alpha=1.105;beta=0.4286;
%x=0:
1/2000:
1;
%f=alpha*x./(1+beta*x.*x);
%figure
%plot(x,f);
%Generalmodel:
phase
%f(x)=a*x*x/(1+b*x)+c
%Coefficients(with95%confidencebounds):
%a=2.334(2.287,2.38)
%b=-0.6716(-0.6818,-0.6615)
%c=14.53(14.52,14.54)
%Goodnessoffit:
%SSE:
62.23
%R-square:
0.986
%AdjustedR-square:
0.986
%RMSE:
0.142
%alpha=2.334;beta=-0.6716;c=14.53;
%x=0:
1/2000:
1;
%f=alpha*x.*x./(1+beta*x.*x)+c;
%figure
%plot(x,f);
用信号激励Saleh模型
Matlab程序:
%-----simulateSalehModel-----
t=(1:
length(in))/1e7;
yabs=abs(in);
phi0=angle(in);
alpha=1.105;beta=0.4286;
yamp=alpha*yabs./(1+beta*yabs.*yabs);
alpha=2.334;beta=-0.6716;c=14.53;
yphi=alpha*yabs.*yabs./(1+beta*yabs.*yabs)+c;
yest=yamp.*exp(j*(-yphi*pi/180+phi0));
figure;
plot(t,abs(yest),'-ro','Markersize',3,'MarkerFaceColor','r')
holdon
plot(t,abs(out),'g')
gridon
title('theestimateandrealtimedomainsignal')
holdoff
legend('estm','real')
xlabel('Time');
ylabel('theNormalizedOutputSignalAmplitude');
Fs=1e7;
h=spectrum.periodogram('gauss');
Hpsd=psd(h,out(1:
8000),'Fs',Fs,'SpectrumType','twosided','NFFT',2048,'Centerdc',true);
Hpsd1=psd(h,yest(1:
8000),'Fs',Fs,'SpectrumType','twosided','NFFT',2048,'Centerdc',true);
plot(Hpsd)
holdon
%figure;
plot(Hpsd1)
gridoff
legend('real','est')
Saleh建模的误差:
Matlab程序:
figure;
plot(t,(abs(yest)-abs(out)),'r')
gridon
title('theAmplitudeerrorofsignals')
figure;
plot(t,(angle(yest)-angle(out)),'r')
gridon
title('theerrorofPhase')
计算误差:
err=sum(abs(yest-out))/19996
err=0.0212
、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、
记忆多项式模型
建模:
Matlab程序:
function[output]=vecout(input,n)
invec=input(n:
-1:
n-2);
output=[invec
(1)*abs(invec
(1))^0;invec
(1)*abs(invec
(1))^2;invec
(1)*abs(invec
(1))^4;
invec
(2)*abs(invec
(2))^0;invec
(2)*abs(invec
(2))^2;invec
(2)*abs(invec
(2))^4;
invec(3)*abs(invec(3))^0;invec(3)*abs(invec(3))^2;invec
(2)*abs(invec(3))^4];
利用RLS算法估计模型参数:
y=out;
%estimatethecoefficientsusingRLSmethod
Lambda=0.98;%Settheforgettingfactor
Delta=0.001;%RinitializedtoDelta*I
u=9;
Order=length(1:
u);
P=Delta*eye(Order,Order);
w=zeros(Order,1);
%----------------------------------------------------
forn=3:
length(in)
u=vecout(in,n);%onecolumn
pi_=P*u;%onecolumn
k=Lambda+u'*pi_;%onescalar
K=pi_/k;%onecolumn
y(n)=w'*u;
%yest=[yest,yest_n];
e(n)=out(n)-y(n);%onescalar
%e=[e,e_n];
w=w+K*conj(e(n));%onecolumn
PPrime=K*u'*P;
P=(P-PPrime)/Lambda;%onematrix
end
figure;
plot((abs(e)),'b');
动态的模型误差:
Matlab程序:
%-----timedomainsignal-----
figure;
plot(abs(y),'-ro','Markersize',3,'MarkerFaceColor','r')
holdon
plot(abs(out),'g')
gridon
title('theestimateandrealtimedomainsignal')
holdoff
legend('estm','real')
xlabel('Time');
ylabel('theNormalizedOutputSignalAmplitude');
%-----frequencydomainsignal-----
Fs=1e7;
h=spectrum.periodogram('gauss');
Hpsd=psd(h,out(1:
8000),'Fs',Fs,'SpectrumType','twosided','NFFT',2048,'Centerdc',true);
Hpsd1=psd(h,y(1:
8000),'Fs',Fs,'SpectrumType','twosided','NFFT',2048,'Centerdc',true);
plot(Hpsd)
holdon
%figure;
plot(Hpsd1)
gridoff
legend('real','est')
动态误差为:
err=sum(abs(y-out))/19996
err=0.0037
静态模型误差:
Matlab程序:
yout=in;
forn=3:
length(in)
u=vecout(in,n);
yout(n)=w'*u;
end
%-----timedomainsignal-----
figure;
plot(abs(yout),'-ro','Markersize',3,'MarkerFaceColor','r')
holdon
plot(abs(out),'g')
gridon
title('theestimateandrealtimedomainsignal')
holdoff
legend('estm','real')
xlabel('Time');
ylabel('theNormalizedOutputSignalAmplitude');
%-----frequencydomainsignal-----
Fs=1e7;
h=spectrum.periodogram('gauss');
Hpsd=psd(h,out(1:
8000),'Fs',Fs,'SpectrumType','twosided','NFFT',2048,'Centerdc',true);
Hpsd1=psd(h,yout(1:
8000),'Fs',Fs,'SpectrumType','twosided','NFFT',2048,'Centerdc',true);
plot(Hpsd)
holdon
%figure;
plot(Hpsd1)
gridoff
legend('real','est')
静态误差为:
err=sum(abs(yout-out))/19996
err=0.0045
、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、
、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、
Volterra模型三阶记忆长度为三,无二阶。
加入了交叉项。
建模:
%VolterraTable
function[y,v,r,y1,y2,y3]=vtab(L,x)
%L:
memorylength
switchL
case1
%-----memory1-----
n=1;
%order1
y1=x(n);
%order2
y2=x(n)^2;
%order3;
y3=x(n)^3;
%output
y=[y1,y2,y3]';
v=[x(n),x(n)^2,x(n)^3]';
r=[x(n),x(n)^2,x(n)^3]';
case2
%-----memory2-----
n=2;
%order1
y1=[x(n),x(n-1)];
%order2
y2=[x(n)^2,x(n-1)^2,x(n)*x(n-1)];
%order3
y3=[x(n)^3,x(n-1)^3,x(n)*x(n-1)^2,x(n)^2*x(n-1)];
%output
y=[y1,y2,y3]';
v=[x(n),x(n)^2,x(n)*x(n-1),x(n)^3,x(n)*x(n-1)^2,x(n)^2*x(n-1)]';
r=[x(n-1),x(n-1)^2,x(n)*x(n-1),x(n-1)^3,x(n)*x(n-1)^2,x(n)^2*x(n-1)]';
case3
%-----memory3-----
n=3;
%order1
y1=[x(n),x(n-1),x(n-2)];
%order2
y2=[x(n)^2,x(n-1)^2,x(n-2)^2,x(n)*x(n-1),x(n-1)*x(n-2),x(n)*x(n-2)];
%order3
y3=[x(n)^3,x(n-1)^3,x(n-2)^3,x(n)*x(n-1)^2,x(n-1)*x(n-2)^2,x(n)^2*x(n-1),x(n-1)^2*x(n-2),...
x(n)*x(n-2)^2,x(n)*x(n-1)*x(n-2),x(n)^2*x(n-2)];
%output
y=[y1,y2,y3]';
v=[x(n),x(n)^2,x(n)*x(n-1),x(n)*x(n-2),x(n)^3,x(n)*x(n-1)^2,x(n)^2*x(n-1),x(n)*x(n-2)^2,...
x(n)*x(n-1)*x(n-2),x(n)^2*x(n-2)]';
r=[x(n-2),x(n-2)^2,x(n-1)*x(n-2),x(n)*x(n-2),x(n-2)^3,x(n-1)*x(n-2)^2,x(n-1)^2*x(n-2),...
x(n)*x(n-2)^2,x(n)*x(n-1)*x(n-2),x(n)^2*x(n-2)]';
otherwisedisp('thisisnotallowed')
end
动态误差:
使用lms算法:
scale=1;%signalscale
PA_in=in*scale;
PA_out=out*scale;
%%estimatethecoefficientsusinglmsmethod
mu=0.6;%Theadaptationstepsize
w=[0,0,0,...
0,0,0,...
0,0,0,...
0,0,0,0];
a=1e-10;
forn=3:
length(PA_in)
u=PA_in(n:
-1:
n-2);
[u1,u2,u3,u4,u5,u6]=vtab(3,u);
u=([u4,u6]).';%onecolumn
y(n)=conj(w)*u;%onescale
e(n)=PA_out(n)-y(n);%onescale
w=w+mu*conj(e(n))*u.'/((u'*u)+a);%onerow
end
figure;
plot(abs(e),'b');
figure;
plot(abs(e),'b');
figure;
plot(abs(y),'-ro','Markersize',3,'MarkerFaceColor','r')
holdon
plot(abs(PA_out),'g')
gridon
title('theestimateandrealtimedomainsignal')
holdoff
legend('estm','real')
xlabel('Time');
ylabel('theNormalizedOutputSignalAmplitude');
Fs=1e7;
h=spectrum.periodogram('gauss');
Hpsd=psd(h,out(1:
8000),'Fs',Fs,'SpectrumType','twosided','NFFT',2048,'Centerdc',true);
Hpsd1=psd(h,y(1:
8000),'Fs',Fs,'SpectrumType','twosided','NFFT',2048,'Centerdc',true);
plot(Hpsd)
holdon
%figure;
plot(Hpsd1)
gridoff
legend('real','est')
Volterra模型误差:
y=y.';
err=sum(abs(abs(y(1:
length(y)))-abs(PA_out(1:
length(y)))))/19996
err=0.0015;
静态误差:
Matlab程序:
yout=PA_out;
forn=3:
length(PA_in)
u=PA_in(n:
-1:
n-2);
[u1,u2,u3,u4,u5,u6]=vtab(3,u);
u=([u4,u6]).';
yout(n)=w*u;
end
%-----timedomainsignal-----
figure;
plot(abs(yout),'-ro','Markersize',3,'MarkerFaceColor','r')
holdon
plot(abs(PA_out),'g')
gridon
title('theestimateandrealtimedomainsignal')
holdoff
legend('estm','real')
xlabel('Time');
ylabel('theNormalizedOutputSignalAmplitude');
%-----frequencydomainsignal-----
figure;
Fs=1e7;
h=spectrum.periodogram('gauss');
Hpsd=psd(h,PA_out(1:
8000),'Fs',Fs,'SpectrumType','twosided','NFFT',2048,'Centerdc',true);
Hpsd1=psd(h,yout(1:
8000),'Fs',Fs,'SpectrumType','twosided','NFFT',2048,'Centerdc',true);
plot(Hpsd)
holdon
plot(Hpsd1)
gridoff
legend('real','est')
err=sum(abs(abs(yout(1:
length(yout)))-abs(PA_out(1:
length(yout)))))/10000
误差:
err=sum(abs(yout-out))/19996
err=0.0072
从AMAMAMPM特性看静态Volterra模型很糟糕
用RLS算法计算的结果
误差为0.0115