Advertisement

《数字信号处理》正弦信号的波形及频谱的求解

阅读量:

实验一:用MATLAB实现正弦信号y=cos(1/4pit)波形及频谱,画图、对每一行代码进行标注并完成实验报告。

1.实验代码

为实现正弦信号的波形和频谱,可通过编写傅里叶变换和傅里叶反变换的matlab函数,即编写其子程序,有“t2f.m”和“f2t.m”和task.m文件,详细编写如下所示。

新建matlab函数t2f.m文件

复制代码
 %傅里叶变换子程序

    
 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;    %x的傅氏变换。
    
 end

新建matlab函数f2t.m文件

复制代码
 %傅里叶反变换子程序

    
 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的傅氏变换。
    
 x=ifft(X)/dt;                   %快速反傅里叶变换。
    
 %x=[tmp(N/2+1:N),tmp(1:N/2)];
    
 end

新建matlab程序,task.m文件

复制代码
 %% 正弦信号的波形及频谱的求解-程序

    
  
    
 close all;clear all;clc;
    
  
    
  
    
  
    
 global dt df N t f T                    %全局变量
    
  
    
 N=2^14;                                 %采样点数
    
  
    
 dt=0.01;                                %时域采样间隔
    
  
    
 df=1/(N*dt);                            %频域采样间隔
    
  
    
 T=N*dt;                                 %截短时间
    
  
    
 Bs=N*df/2;                              %系统带宽
    
  
    
 t=linspace(-T/2,T/2,N);                 %定义范围为[-T/2,T/2],个数为N。
    
  
    
 f=linspace(-Bs,Bs,N);                   %定义范围为[-Bs,Bs],个数为N。
    
  
    
 s=sin(2/3*pi*t);                        %正弦信号。
    
  
    
 S=t2f(s);                               %调用t2f.m文件。
    
  
    
 a=f2t(S);                               %调用f2t.m文件。
    
  
    
 figure(1);                              %生成窗口1。
    
  
    
 set(1,'Position',[10,350,600,200]);     %设定窗口位置及大小
    
  
    
 figure(2);                              %生成窗口2。
    
  
    
 set(2,'Position',[10,50,600,200]);      %设定窗口位置及大小
    
  
    
 figure(1)                               %生成窗口1。
    
  
    
 as=abs(S);                              %求模
    
  
    
 plot(f,as);                             %绘制正弦信号频谱图。
    
  
    
 axis([-2,+2, 1.1*min(as), 1.1*max(as)]);%设置坐标轴范围。
    
  
    
 title('正弦信号y=sin(\pit/4)频谱图');     %主题标注。
    
  
    
 xlabel('f (MHz)');                      %横轴标注。
    
  
    
 ylabel('Ps(f)');                        %纵轴标注。
    
  
    
 grid on;                                %打开网格。
    
  
    
 figure(2);                              %生成窗口2。
    
  
    
 plot(t,a);                              %绘制正弦信号波形图。
    
  
    
 axis([-5,5,1.1*min(a),1.1*max(a)]);     %设置坐标轴范围。
    
  
    
 title('正弦信号y=sin(\pit/4)波形图');     %主题标注。
    
  
    
 xlabel('t');                            %横轴标注。
    
  
    
 ylabel('s(t)');                         %纵轴标注。
    
  
    
 grid on;                                %打开网格。

2.实验结果

注意:t2f.m、f2t.m和task.m文件要放在同一个文件夹下。

全部评论 (0)

还没有任何评论哟~