📄 ir.m
字号:
function IR_value=IR(in,qn)
%对IQ接收器最重要的两个参数,即I和Q两路分量之间的幅度一致性和相位正交性,可采
%用如下办法计算:把I、Q 两路信号分别作FFT ,找出频域内信号的幅度,即可算得两路分量的幅度一
%致性;把I、Q两路信号合成一个复数信号,作FFT ,对得到的频谱求镜像抑制比(即频域内的信号与信
%号镜像的幅度比) ,通过镜像抑制比和幅度一致性,可求出接收机的I和Q两路分量之间的相位正交性。
%IR_value=10*log10((alpha.^2+pha.^2)/4)-43*abs(alpha); alpha=(|I|-|Q|)/|I|
%IR_value=-10*log10((alpha.^2+pha.^2)/4);这两个计算公式到底是哪个?
%------------------------------------------------------
n=length(in);
N=512;
%对FFT 的结果,取实、虚部平方和,得功率谱,再开方则得幅度谱,归一化后用分贝表示。
FFT_in=fft(in,N);
FFT_in_real=real(FFT_in);
FFT_in_imag=imag(FFT_in);
power_in=FFT_in_real.^2+FFT_in_imag.^2;
a_in=sqrt(power_in);
FFT_qn=fft(qn,N);
FFT_qn_real=real(FFT_qn);
FFT_qn_imag=imag(FFT_qn);
power_qn=FFT_qn_real.^2+FFT_qn_imag.^2;
a_qn=sqrt(power_qn);
alpha=max((abs(a_in)-abs(a_qn))./abs(a_in));
Ve=max(a_qn)/max(a_in);%幅度一致性误差,这样计算正确吗?
FFT_sn=fft(in+j*qn,N);
FFT_sn_real=real(FFT_sn);
FFT_sn_imag=imag(FFT_sn);
power_sn=FFT_sn_real.^2+FFT_sn_imag.^2;
a_sn=sqrt(power_sn);
figure
plot(0:N-1,a_sn);
[A1,index1]=max(a_sn)
[Aim,indexim]=max(a_sn(1:N/2))
Vir=(Aim)/(A1);
IR=20*log10(Vir)%有些书上定义镜频分量和信号的幅度之比就是镜频抑制比,但按照这个定义的结果不正确呀?
Vir=Vir^2;
pha=acos((Ve^2+1)*(1-Vir)/(2*Ve*(1+Vir)))
%-------------------------------------------------
%pha=angle(FFT_sn(1:N/2))-angle(FFT_sn(N/2+1:N));
%pha=unwrap(angle(FFT_in))-unwrap(angle(FFT_qn))-1/2.*ones(1,N);
%----------------------------------------------
%信号分量与镜频分量的功率比
%IR_value=-10*log10((alpha.^2+pha.^2)/4);
%镜频分量与理想频率(信号)分量的功率比
IR_value=10*log10((alpha.^2+pha.^2)/4)-43*abs(alpha);
%n=1:N/2;
%用FFT对采集的I、Q信号进行谱分析,分别计算信号频率及其对应的镜像频率处的信号幅度,
%两者的幅度之比即为对应的镜像抑制比。
%signal_mag=abs(FFT_sn(n));
%image_mag=abs(FFT_sn(N-n-1));
%IR_value=20*log10((signal_mag-image_mag)./signal_mag);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -