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

📄 datagen.m

📁 包内有产生线性调频波、非线性调频波的源码
💻 M
字号:
function wave=datagen(waveform,TW,BW,IF0,FS,BUTsave,show1,show2);

j=sqrt(-1);
MHz=1e+6;
us=1e-6;

   if waveform==1 
      if (isempty(TW)|TW==0)
          warndlg('请输入脉宽参数!!!','错误');%文件夹出错
          wave=0;
          return;
      elseif (isempty(BW))
          warndlg('请输入带宽参数!!!','错误');%文件夹出错
          wave=0;
          return;
      elseif (isempty(IF0))
          warndlg('请输入中频参数!!!','错误');%文件夹出错
          wave=0;
          return;
      elseif (isempty(FS) | FS==0)
          warndlg('请输入时钟参数!!!','错误');%文件夹出错
          wave=0;
          return;
      else
          f0=IF0*MHz; 
          B=BW*MHz;  
          T=TW*us;  
          fs=FS*MHz; 
      end    
      ts=1/fs; 
      wave = Lfm_gen(B,T,ts,f0);
   elseif waveform==2 
      if (isempty(TW)|TW==0)
          warndlg('请输入脉宽参数!!!','错误');%文件夹出错
          wave=0;
          return;
      elseif (isempty(BW))
          warndlg('请输入带宽参数!!!','错误');%文件夹出错
          wave=0;
          return;
      elseif (isempty(IF0))
          warndlg('请输入中频参数!!!','错误');%文件夹出错
          wave=0;
          return;
      elseif (isempty(FS) | FS==0)
          warndlg('请输入时钟参数!!!','错误');%文件夹出错
          wave=0;
          return;
      else
          f0=IF0*MHz; 
          B=BW*MHz;  
          T=TW*us;  
          fs=FS*MHz; 
      end    
      ts=1/fs; 
      char='gauss';
      if T/us==9 | T/us==12
         kk = 7;
      else
         kk = 5;    
      end
      nn = 2;
      wave = Nlfm_gen(char,kk,nn,B,ts,T,f0);
   elseif waveform==3
      if (isempty(TW)|TW==0)
          warndlg('请输入脉宽参数!!!','错误');%文件夹出错
          wave=0;
          return;
      elseif (isempty(IF0))
          warndlg('请输入中频参数!!!','错误');%文件夹出错
          wave=0;
          return;
      elseif (isempty(FS) | FS==0)
          warndlg('请输入时钟参数!!!','错误');%文件夹出错
          wave=0;
          return;
      else
          f0=IF0*MHz; 
          T=TW*us;  
          fs=FS*MHz; 
      end    
      ts=1/fs; 
      wave = SIN_gen(ts,f0,T);
   else
      if (isempty(TW)|TW==0)
          warndlg('请输入脉宽参数!!!','错误');%文件夹出错
          wave=0;
          return;
      elseif (isempty(IF0))
          warndlg('请输入中频参数!!!','错误');%文件夹出错
          wave=0;
          return;
      elseif (isempty(FS) | FS==0)
          warndlg('请输入时钟参数!!!','错误');%文件夹出错
          wave=0;
          return;
      else
          f0=IF0*MHz; 
          T=TW*us;  
          fs=FS*MHz; 
      end    
      ts=1/fs; 
      wave = SAW_gen(ts,f0,T);
  end

if length(wave)==0
   return;
else   
   axes(show1);
   tt=(1:length(wave))*ts/us;
   plot(tt,wave,'k');
   xlabel('时间(us)','FontName','楷体_GB2312',  'FontSize',14);
   ylabel('幅度(归一化)','FontName','楷体_GB2312',  'FontSize',14);
   title('中频波形','FontName','楷体_GB2312',  'FontSize',18);
   axis([0 max(tt) -1.1 1.1]);
   zoom xon;grid;

   fout=abs(fftshift(fft(wave)));
   fftout=20*log10(fout/max(fout));
   ff=-fs/2:fs/length(fout):fs/2-fs/length(fout);
  
   axes(show2);
   plot(ff/MHz,fftout,'k');
   xlabel('频率(MHz)','FontName','楷体_GB2312',  'FontSize',14);
   ylabel('幅度(dB)','FontName','楷体_GB2312',  'FontSize',14);
   title('信号频谱','FontName','楷体_GB2312',  'FontSize',18);
   zoom xon;grid;
   axis([0 max(ff/MHz) -60 3]);

   set(BUTsave,'Enable','on');
end

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -