⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 nlfm_gen.m

📁 包内有产生线性调频波、非线性调频波的源码
💻 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 + -