Matlab信号与系统实验-实验三 连续时间信号的频域分析

一、实验目的

1、掌握傅立叶变换及其性质;

2、掌握连续时间信号傅立叶变换的数值计算方法;

3、掌握利用MATLAB实现信号的幅度调制的方法;

4、掌握利用MATLAB实现傅立叶变换的方法;

5、掌握利用MATLAB实现对周期信号的频谱分析。

二、实验内容

1、编程求解正弦函数、取样函数、门函数 、双边指数函数信号的傅立叶变换式。

Matlab 复制代码
syms t;
f=sin(t);
F=fourier(f);
disp('正弦函数的傅里叶变换式为');
disp(F);
f2=f/t;
F2=fourier(f2);
disp('取样函数的傅里叶变换式为');
disp(F2);
f3=heaviside(t+1)-heaviside(t-1);
F3=fourier(f3);
disp('门函数u(t+1)-u(t-1)的傅里叶变换式为');
disp(F3);
f4=exp(-2*abs(t));
F4=fourier(f4) ;
disp("双边函数e**(-2*|t|)的傅里叶变换式为");
disp(F4);

2、设,已知信号f(t)的傅立叶变换为 ,求的傅立叶变换,观察并验证傅立叶变换的对称性。

Matlab 复制代码
clear;
syms t;
f=sin(t)/t
F=fourier(f);
disp('Sat的傅里叶变换为π*g(w)');
disp(F)
ft1=-pi*(heaviside(t+1)-heaviside(t-1))
Ft1=fourier(ft1);
disp("π*g(t)的傅里叶变换");
disp(Ft1);

3、已知,试用MATLAB给出f(t),y(t)的时域波形及它们的频谱的图形,验证时域卷积定理。

Matlab 复制代码
clear;
fs=20;%采样率
T=4;
n=round(T*fs);%采样点个数
t=linspace(-T,T,n);%时域横坐标
x =  heaviside(t+1)-heaviside(t-1);
subplot(2,2,1);
plot(t,x);%画时域图
xlabel("t/s")
X = fftshift(fft(x./(n))); %用fft得出离散傅里叶变换
f=linspace(-fs/2,fs/2-1,n);%频域横坐标,奈奎斯特采样定理,最大原信号最大频率不超过采样频率的一半
subplot(223)
plot(f,abs(X));%画双侧频谱幅度图
xlabel("f/Hz")
ylabel("幅度")
K =conv(x,x);

subplot(222)
plot(K)
subplot(224)
X2=fftshift(fft(K./(n)));
plot(abs(X2))

4、绘制出下列信号及幅频图

(1)门函数脉冲序列

Matlab 复制代码
clear;
fs=20;%采样率
T=4;
n=round(T*fs);%采样点个数
t=linspace(-T,T,n);%时域横坐标
x =  heaviside(t+1/2)-heaviside(t-1/2);
subplot(3,1,1);
plot(t,x);%画时域图
xlabel("t/s")
X = fftshift(fft(x./(n))); %用fft得出离散傅里叶变换
f=linspace(-fs/2,fs/2-1,n);%频域横坐标,奈奎斯特采样定理,最大原信号最大频率不超过采样频率的一半
subplot(3,1,2)
plot(f,abs(X));%画双侧频谱幅度图
xlabel("f/Hz")
ylabel("幅度")

(2)单边指数信号

Matlab 复制代码
clear;
fs=20;%采样率
T=4;
n=round(T*fs);%采样点个数
t=linspace(-T,T,n);%时域横坐标
x = heaviside(t).*exp(-2*t)
subplot(3,1,1);
plot(t,x);%画时域图
xlabel("t/s")
X = fftshift(fft(x./(n))); %用fft得出离散傅里叶变换
f=linspace(-fs/2,fs/2-1,n);%频域横坐标,奈奎斯特采样定理,最大原信号最大频率不超过采样频率的一半
subplot(3,1,2)
plot(f,abs(X));%画双侧频谱幅度图
xlabel("f/Hz")
ylabel("幅度")

(3)高斯信号

Matlab 复制代码
clear;
fs=500;%采样率
T=1;%时宽1s
n=round(T*fs);%采样点个数
t=linspace(-T,T,n);%时域横坐标
x =exp(-(t.*t));
subplot(3,1,1);
plot(t,x);%画时域图
xlabel("t/s")
%X=fft(x);
X = fftshift(fft(x./(n))); %用fft得出离散傅里叶变换
f=linspace(-fs/2,fs/2-1,n);%频域横坐标,奈奎斯特采样定理,最大原信号最大频率不超过采样频率的一半
subplot(3,1,2)
plot(f,abs(X));%画双侧频谱幅度图
xlabel("f/Hz")
ylabel("幅度")

(4)三角脉冲信号

Matlab 复制代码
clear;
fs=20;%采样率
T=5;%时宽5s
n=round(T*fs);%采样点个数
t=linspace(-T,T,n);%时域横坐标
x = tripuls(t,2);
subplot(2,1,1);
plot(t,x);%画时域图
xlabel("t/s")
X = fftshift(fft(x./(n))); %用fft得出离散傅里叶变换
f=linspace(-fs/2,fs/2-1,n);%频域横坐标,奈奎斯特采样定理,最大原信号最大频率不超过采样频率的一半
subplot(2,1,2)
plot(f,abs(X));%画双侧频谱幅度图
xlabel("f/Hz")
ylabel("幅度")

(5)求的傅立叶逆变换

Matlab 复制代码
clear;
fs=20;%采样率
T=5;%时宽5s
n=round(T*fs);%采样点个数
t=linspace(-T,T,n);%时域横坐标
x = exp(-abs(t))/2;
subplot(2,1,1);
plot(t,x);%画时域图
xlabel("t/s")
X = fftshift(fft(x./(n)));
f=linspace(-fs/2,fs/2-1,n);%频域横坐标,奈奎斯特采样定理,最大原信号最大频率不超过采样频率的一半
subplot(2,1,2)
plot(f,abs(X));%画双侧频谱幅度图
xlabel("f/Hz")
ylabel("幅度")
相关推荐
后台模板学习3 分钟前
Go Web开发中任务调度框架的源码解析与高可用实现方案
开发语言·后端·golang
xiaoye-duck17 分钟前
《C++ 项目:手写大模型接入 SDK》DeepSeek接口设计(上):初始化和全量响应
开发语言·网络·c++·语言模型
fpcc22 分钟前
跟我学c++中级篇—streambuf在glog中的应用分析
开发语言·c++
吾与谁归in24 分钟前
C#脚本工具,支持智能提示自动补全(WPF + Roslyn + AvalonEdit)
开发语言·c#·wpf
昂好的day35 分钟前
WPF 从零入门(上):WPF 是什么、XAML 语法、布局与样式全解
开发语言·c#·wpf
飞浪纪元[FWC–FE]38 分钟前
Qt 构建排错实录:从 MSB 1009 到生成器选型
开发语言·数据库·qt
fly-iot39 分钟前
【FDE知识库】(1):AI 编程时代开发语言选型分析,云使用go,企业用java,算法python,底层c
开发语言·人工智能·golang
云边有个稻草人40 分钟前
Prometheus Pushgateway教程:离线任务指标上报、Shell与Python示例、远程访问
开发语言·python·prometheus
暴走约伯42 分钟前
【VFX工具链源码拆解 01】总体架构:大型项目特效流程的程序化落地
开发语言·经验分享·3d·unity·架构·游戏引擎
C^h10 小时前
c++ string
开发语言·c++