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

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

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文件要放在同一个文件夹下。

《数字信号处理》正弦信号的波形及频谱的求解_第1张图片

 

你可能感兴趣的:(matlab,数字信号处理,matlab,数字信号处理)