📄 realdatatest64v2.m
字号:
clear all;
u3i=load('000ci.txt'); %011ci.txt 文件与程序同一文件夹
u3q=load('000cq.txt'); %文件名 %011cq.txt
%u3i,u3q是原始数据存放数组 指令:plot(u3i);figure;plot(u3q)画原始数据图
%plot(abs(u3i+j*u3q))求模
%信号参数
fs=30e6; %AD对信号采样率
T=3e-6; %信号最大时间宽度。 1us 3us 10us
B=24e6; %信号带宽
K=B/T; %调频信号线性增长速度
f0=0; %初始频率
Ns=fix(T*fs); %信号有效的采样点数
t0=1/fs; %采样周期
Num=256; %脉压点数 1us = 64, 3us=256, 10us=512.
WordLength=16; %保存信号位数
%----------------------------------------------------
% 生成时域信号
%----------------------------------------------------
i=[0:1:Ns-1];
t=(i-fix((Ns-1)/2))*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;
%----------------------------
si=(u3i);
%si=si(1:5940);
jmpnum =167; %(可修改)%735是重新采样间隔 用示波器采样频率除以30MHz
selnum =5000; %(可修改) %5000是实际看到的点数,尽量靠近chirp第一点
fnum =floor(selnum/jmpnum);
sizeofsigp=size(u3i);
sizeofsig=sizeofsigp(1);
numsigadj=sizeofsig/jmpnum;
maxnumforpro = floor((sizeofsig - selnum )/jmpnum);
if maxnumforpro-fnum>=Num
numadj=Num;
else
numadj = maxnumforpro-fnum;
end
sq=(u3q);
if (numadj)>=Num
ind=[fnum:fnum+numadj-1];csi=si(ind*jmpnum);
ind=[fnum:fnum+numadj-1];csq=sq(ind*jmpnum);
else
ind=[fnum:fnum+numadj-1];csi=[si(ind*jmpnum)' zeros(1,Num-(numadj))]';
ind=[fnum:fnum+numadj-1];csq=[sq(ind*jmpnum)' zeros(1,Num-(numadj))]'; ;
end
asdfg= csi'+j*(csq');
%----
zxcv=ifft(fft(asdfg).*(CjSig_Widownon));
x=fftshift(abs(zxcv));%%%x=fftshift(abs(ifft(fft(Signal).*(CjSig_Widownon))));
plot(20*log10(eps+x/max(x)))
title('db图')
figure
plot((x))
title('时域');
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -