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

📄 正弦波的仿真 (3).txt

📁 基于matlab的正弦波仿真 有波行和频谱
💻 TXT
字号:
(一),用到的函数
1,f2t函数
   function x=f2t(X)
   global dt df t f T N
   %x=f2t(X)
   %x为时域的取样值矢量
   %X为x的傅氏变换
   %X与x长度相同并为2的整幂
   %本函数需要一个全局变量dt(时域取样间隔)
   X=[X(N/2+1:N),X(1:N/2)];
   x=ifft(X)/dt;
   end 
  
2,t2f函数。
   function X=t2f(x)
   global dt df N t f T
   %X=t2f(x)
   %x为时域的取样值矢量
   %X为x的傅氏变换
   %X与x长度相同,并为2的整幂。 
   %本函数需要一个全局变量dt(时域取样间隔)
   H=fft(x);
   X=[H(N/2+1:N),H(1:N/2)]*dt;
   end
 
(二),主程序。
   1,%(1)绘出正弦信号波形及频谱
   global dt df t f N 
   close all
   k=input('取样点数=2^k, k取10左右');
   if isempty(k), k=10; end
   f0=input('f0=取1(kz)左右');
   if isempty(f0), f0=1; end
   N=2^k;
   dt=0.01;                        %ms
   df=1/(N*dt);                    %KHz
   T=N*dt;                         %截短时间
   Bs=N*df/2;                      %系统带宽
   f=[-Bs+df/2:df:Bs];             %频域横坐标
   t=[-T/2+dt/2:dt:T/2];           %时域横坐标
   s=sin(2*pi*f0*t);               %输入的正弦信号
   S=t2f(s);                       %S是s的傅氏变换
   a=f2t(S);                       %a是S的傅氏反变换
   a=real(a);
   as=abs(S);
   subplot(2,1,1)                  %输出的频谱 
   plot(f,as,'b');
   grid
   axis([-2*f0,+2*f0,min(as),max(as)]) 
   xlabel('f (KHz)')
   ylabel('|S(f)| (V/KHz)') %figure(2)
   subplot(2,1,2)
   plot(t,a,'black')                   %输出信号波形画图
   grid
   axis([-2/f0,+2/f0,-1.5,1.5])
   xlabel('t(ms)')
   ylabel('a(t)(V)')
   gtext('频谱图')

⌨️ 快捷键说明

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