《数字信号处理》正弦信号的波形及频谱的求解
发布时间
阅读量:
阅读量
实验一:用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)
还没有任何评论哟~
