📄 realdatatest512v2zcl.m
字号:
clear all;
u3i=load('000cqz.txt');
u3q=load('000ciz.txt');
%plot(abs(u3i+j*u3q))求模
%-----
%信号参数
fs=50e6; %AD对信号采样率
T=10e-6; %信号最大时间宽度。
B=24e6; %信号带宽
K=B/T; %调频信号线性增长速度
f0=0; %初始频率
Ns=fix(T*fs); %信号有效的采样点数
t0=1/fs; %采样周期
Num=250003; %脉压点数
WordLength=16; %保存信号位数
%----------------------------------------------------
% 生成时域信号
%----------------------------------------------------
i=[0:1:Ns-1];
t=(i-fix((Ns-1)/2))*t0;%t=(i)*t0;
phase2=2*pi*(f0*t+K*t.^2/2);
Signal=([exp(j*phase2) zeros(1,Num-Ns)]);
ch_num=1:Ns;
xghamming=0.54-0.46*cos(2*pi*((ch_num-1)/(Ns-1)));
%加预失真时去掉%CjSig=conj(fft((Signal.*[xghamming zeros(1,(Num-Ns))]),Num));
art=[hamming(Ns)' zeros(1,Num-Ns)];
CjSig=conj(fft(Signal.*art,Num));
% % %
%CjSig=conj(fft((Signal.*[hamming(Ns)' zeros(1,(Num-Ns))]),Num));%化为相关的一步
%CjSig=conj(fft((Signal.*art),Num)); %%截断三句之三
CjSig_Widownon=CjSig;%.*hamming(Num)';
%CjSig_Widownon_black=CjSig.*blackman(length(Num))';
%此处可以加窗,具体加什么窗可自行决定
%-----------------------------------------------------
%==========================================================================
%先扩Shift_Num倍以保证精度,注意在VHDL中要将所扩部分进行处理
%以下即为所要扩充位数选择的算法
AbsMax=max(abs([real(CjSig_Widownon) imag(CjSig_Widownon)]));
Shift_Num=fix(log2(ceil((2^(WordLength-1))/(AbsMax)))); %补码
CjSig_Widownon_Aug=CjSig_Widownon.*2^Shift_Num; %移8位
%------------------------以下计算原信号扩充位数
%这两步是为了尽量扩大精度
Sig_AbsMax=max(abs([real(Signal) imag(Signal)]));
Sig_Shift_Num=fix(log2(ceil((2^(WordLength-1))/(Sig_AbsMax)))); %补码
Signal_Aug=Signal.*2^Sig_Shift_Num;
%----------------------------
asdfg=u3i+j*u3q;% [zeros(1,100) csi' zeros(1,112)]+j*[zeros(1,100) csq' zeros(1,112)];
%----
zxcv=ifft(fft(asdfg').*(CjSig_Widownon));
x=(abs(zxcv));%%%x=fftshift(abs(ifft(fft(Signal).*(CjSig_Widownon))));
plot(20*log10(eps+x/max(x)))
figure
plot(x)
%-----------------------------
%jmp=4163;
%stepdata=zxcv(2590+jmp*14:jmp:2590+jmp*45);
%figure;plot(abs(ifft(stepdata)))
ng = 4167;%4250;
ttk = reshape(zxcv(1:ng*58),ng,58);
figure;plot(abs(ttk))
ttksig = reshape(u3i(1:ng*58),ng,58);
figure;plot(abs(ttksig))
[maxsig,maxindx]=max(abs(ttk));
for ps=1:58
sigpro(ps) = ttk(maxindx(ps),ps);
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -