📄 nlfm_gen.m
字号:
function [wave] = Nlfm_gen(c,k,n,B,Ts,delta,f0);
%本函数根据给定的窗函数综合出相应的NLFM信号
%算法原理见扬斌博士论文p57-59
%其中c是一个字符串代表要使用的窗函数类型,对照方式见笔记本p59
%k、n是幅度阶数控制字,当用blackman窗时k是一个向量:k(1)=a1,k(2)=a2,...,k(n)=an
%B是信号带宽,Ts是采样间隔,delta是输出NLFM信号的时宽
%
%*********窗函数产生**************************************************
%
j=sqrt(-1);
fs=1/Ts;
M=19200;
h=waitbar(0,'正在计算波形数据,请等待...');
set(h,'position',[200 200 280 50]);
f=(1:1:M)*fs/M-fs/2;%f是频率标度,从-fs/2到fs/2,即FFT从左到右的频率标尺
switch c
case 'ha'
W=k+(1-k)*(cos(pi*f/B)).^n;
case 'gauss'
W=exp(-k*(f/B).^2);
case 'black'
W=zeros(1,length(f));
for i=1:n
W=W+k(i)*cos(2*pi*(i-1)*f/B);
end
end
left_zero=M/2-fix(B*M/2/fs);
right_zero=M/2+fix(B*M/2/fs);
W(1:left_zero)=zeros(1,left_zero)+0.00000001;
W(right_zero:M)=zeros(1,M+1-right_zero)+0.00000001;
waitbar(0.1,h);
for i=1:M
T(i)=sum(W(1:i))*fs/M;
waitbar(i/M*0.7+0.1,h);
end
T_temp=T(left_zero+1:right_zero-1);
f_temp=f(left_zero+1:right_zero-1);
t=0:Ts:delta;
inter=linspace(0,T(M),length(t));%t*T(M)/delta;
fq=interp1(T_temp,f_temp,inter,'spline');
M=length(t);
for i=1:M
phi(i)=2*pi*sum(fq(1:i-1))*delta/length(t);
waitbar(i/M*0.2+0.8,h);
end
t=((1:length(phi))-1)*Ts;
wave=sin(2*pi*f0*t+phi);
close(h);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -