【信号与系统】【北京航空航天大学】实验三、连续时间信号的频域分析 【MATLAB】
一、实验目的
1、掌握 傅立叶变换(The Fourier Transform) 及其性质;
2、掌握连续时间信号傅立叶变换的数值计算方法;
3、掌握利用 MATLAB 实现信号的幅度调制(Amplitude Modulation, AM) 的方法;
4、掌握利用 MATLAB 实现对周期信号的频谱分析。
二、实验内容
1、
MATLAB代码:
>> clear all;
>> t = -4 : 0.001 : 4;
>> N = input('N = ');
N = 3
>> c0 = 0.5;
>> fN = c0 * ones(1, length(t));
>> for n = 1 : 2 : N
fN = fN + cos(n * pi * t / 2) * sinc(n / 2);
end
>> figure
>> plot(t, fN);
>> title(['N = ' num2str(N)]);
>> xlabel('t');
>> ylabel('f(t)');
>> figure
>> fN = c0 * ones(1, length(t));
>> N = input('N = ');
N = 9
>> for n = 1 : 2 : N
fN = fN + cos(n * pi * t / 2) * sinc(n / 2);
end
>> plot(t, fN);
>> title(['N = ' num2str(N)]);
>> xlabel('t');
>> ylabel('f(t)');
>> figure
>> fN = c0 * ones(1, length(t));
>> N = input('N = ');
N = 24
>> for n = 1 : 2 : N
fN = fN + cos(n * pi * t / 2) * sinc(n / 2);
end
>> plot(t, fN);
>> title(['N = ' num2str(N)]);
>> xlabel('t');
>> ylabel('f(t)');
>> figure
>> fN = c0 * ones(1, length(t));
>> N = input('N = ');
N = 70
>> for n = 1 : 2 : N
fN = fN + cos(n * pi * t / 2) * sinc(n / 2);
end
>> plot(t, fN);
>> title(['N = ' num2str(N)]);
>> xlabel('t');
>> ylabel('f(t)');
公式推导:
叠加生成的信号波形图:
(1)N = 3:
(2)N = 9:
(3)N = 24:
(4)N = 70:
2、
MATLAB代码:
(1)、绘制方波信号:
>> clear all;
>> t = -6 : 0.001 : 6;
>> n = round(length(t) / 12);
>> f = [-2 * ones(n, 1); 2 * ones(2 * n, 1); -2 * ones(2 * n, 1); 2 * ones(2 * n, 1);-2 * ones(2 * n, 1); 2 * ones(2 * n, 1); -2 * ones(n + 1, 1)];
>> figure
>> plot(t, f);
>> axis([-6 6 -3 3]);
>> grid on;
>> title('方波信号', 'FontSize', 14);
>> xlabel('t');
>> ylabel('f(t)');
(2)、进行谐波叠加:
>> clear all;
>> t = -4 : 0.001 : 4;
>> fN = 0;
>> N = 2;
>> for n = 1 : N
fN = fN + 4 * (sinc(n / 2) - sinc(n)) * cos(n * pi / 2 * t);
end
>> m = round(length(t) / 8);
>> figure
>> subplot(2, 2, 1);
>> f = [2 * ones(m, 1); -2 * ones(2 * m, 1); 2 * ones(2 * m, 1); -2 * ones(2 * m, 1); 2 * ones(m + 1, 1)];
>> plot(t, f);
>> grid on;
>> axis([-4 4 -3 3]);
>> hold on;
>> plot(t, fN);
>> title('1~2次谐波叠加', 'FontSize', 14);
>> xlabel('t');
>> ylabel('f(t)');
>> subplot(2, 2, 2);
>> fN = 0;
>> N = 4;
>> for n = 1 : N
fN = fN + 4 * (sinc(n / 2) - sinc(n)) * cos(n * pi / 2 * t);
end
>> plot(t, f);
>> grid on;
>> axis([-4 4 -3 3]);
>> hold on;
>> plot(t, fN);
>> title('1~4次谐波叠加', 'FontSize', 14);
>> xlabel('t');
>> ylabel('f(t)');
>> subplot(2, 2, 3);
>> fN = 0;
>> N = 6;
>> for n = 1 : N
fN = fN + 4 * (sinc(n / 2) - sinc(n)) * cos(n * pi / 2 * t);
end
>> plot(t, f);
>> grid on;
>> axis([-4 4 -3 3]);
>> hold on;
>> plot(t, fN);
>> title('1~6次谐波叠加', 'FontSize', 14);
>> xlabel('t');
>> ylabel('f(t)');
>> subplot(2, 2, 4);
>> fN = 0;
>> N = 100;
>> for n = 1 : N
fN = fN + 4 * (sinc(n / 2) - sinc(n)) * cos(n * pi / 2 * t);
end
>> plot(t, f);
>> grid on;
>> axis([-4 4 -3 3]);
>> hold on;
>> plot(t, fN);
>> title('1~100次谐波叠加', 'FontSize', 14);
>> xlabel('t');
>> ylabel('f(t)');
生成的信号波形图:
(1)、方波信号:
(2)、谐波叠加结果:
3、
求傅里叶级数过程:
MATLAB代码:
>> clear all;
>> N = 10;
>> n1 = -N : -1;
>> C1 = 4 * j * sin(n1 * pi / 2) / pi ^ 2 ./ n1 .^ 2;
>> C0 = 0;
>> n2 = 1 : N;
>> C2 = 4 * j * sin(n2 * pi / 2) / pi ^ 2 ./ n2 .^ 2;
>> Cn = [C1, C0, C2];
>> n = -N : N;
>> figure
>> subplot(2, 1, 1);
>> stem(n, abs(Cn));
>> axis([-10 10 0 0.5]);
>> grid on;
>> ylabel('Cn的幅度谱');
>> subplot(2, 1, 2);
>> stem(n, angle(Cn));
>> grid on;
>> ylabel('Cn的相位谱');
>> xlabel('\omega/\omega_0');
生成的幅度谱和相位谱:
4、
求傅里叶级数过程:
MATLAB代码:
>> clear all;
>> n1 = -10 : -1;
>> n2 = 1 : 10;
>> C1 = 2 * sinc(n1 / 2) + 4 * j * sin(n1 * pi / 2) / pi ^ 2 ./ n1 .^ 2;
>> C2 = 2 * sinc(n2 / 2) + 4 * j * sin(n2 * pi / 2) / pi ^ 2 ./ n2 .^ 2;
>> C0 = 0;
>> n = -10 : 10;
>> Cn = [C1, C0, C2];
>> figure
>> subplot(2, 1, 1);
>> stem(n, abs(Cn));
>> grid on;
>> ylabel('Cn的幅度谱');
>> subplot(2, 1, 2);
>> stem(n, angle(Cn));
>> grid on;
>> ylabel('Cn的相位谱');
>> xlabel('\omega/\omega_0');
生成的幅度谱和相位谱:
5、思考题
第2题中所提及的不同的产生方波信号的方法,分别有什么优点与缺点?
答:
用本题中的方法产生方波信号的缺点是较为复杂,需要将一个周期分割成若干部分,并对每一部分分别赋值;优点是免去了占空比的计算,且信号不一定以y = 0为中心上下振动;用square函数产生方波信号的优点是函数调用较为简单;缺点是需要先已知或通过计算得出信号的占空比,且只能绘制关于x轴上下对称(以y=0为中心振动)的方波信号。
三、实验收获与感想:
1、 遇到新的函数,可以在命令行中输入 “help + 函数名”命令来了解此函数的用法;
2、 sinc函数的两种定义:
MATLAB R2020a中的sinc函数是归一化的sinc函数。
3、 绘制方波时最好在一张图上绘制2~3个周期;
4、 函数用法:ones(n, 1); num2str( ); title函数的格式化用法; abs(Z); angle(Z);
三、参考书目
《信号与系统(第二版)》,【美】Alan V. Oppenheim 等 著,刘树棠 译,北京,电子工业出版社,2020年8月。
相关文章:

【信号与系统】【北京航空航天大学】实验三、连续时间信号的频域分析 【MATLAB】
一、实验目的 1、掌握 傅立叶变换(The Fourier Transform) 及其性质; 2、掌握连续时间信号傅立叶变换的数值计算方法; 3、掌握利用 MATLAB 实现信号的幅度调制(Amplitude Modulation, AM) 的方法ÿ…...

FFmpeg之AVFilter
文章目录 一、概述二、重要结构体2.1、AVFilterGraph2.2、AVFilter2.3、AVFilterContext 三、流程梳理3.1、FFmpeg AVFilter 使用整体流程3.2、过滤器构建流程3.2.1、分配AVFilterGraph3.2.2、创建过滤器源3.2.3、创建接收过滤器3.2.4、生成源和接收过滤器的输入输出3.2.5、通过…...

ES 之索引和文档
本文主要介绍ES中的数据组成结构单元。 一、文档(Document) 1、概念 ES的数据存储单元是面向文档的,文档是所有数据存储,搜索的最小单元。 你可以把ES中的文档对应成mysql中的一条条数据记录。到时候你存进ES的数据就是一个个文档。 文档存入ES是序列…...

使用muduo库编写网络server端
muduo库源码编译安装和环境搭建 C muduo网络库知识分享01 - Linux平台下muduo网络库源码编译安装-CSDN博客 #include<iostream> #include<muduo/net/TcpServer.h> #include<muduo/net/EventLoop.h> using namespace std; using namespace muduo; using name…...

Unity3D和three.js的比较
一、Unity3D和three.js简介 Unity3D是一款跨平台的游戏引擎,可以用于开发2D和3D游戏。它提供了一个可视化的开发环境,包含了强大的编辑器和工具,使开发者可以方便地创建游戏场景、添加物体、设置物理效果、编写脚本等。Unity3D支持多种平台,包括PC、移动设备、主机等,可以…...

JavaScript 类型判断及类型转换规则
文章目录 JavaScript 类型及其判断使用 typeof 判断类型使用 instanceof 判断类型使用 constructor 和 Object.prototype.toString 判断类型JavaScript 类型及其转换JavaScript 函数参数传递cannot read property of undefined 问题解决方案分析一道网红题目JavaScript 类型判断…...
ubuntu禁用/启用图形界面
当安装了带图形界的ubuntu的时候,如果觉得图形界面占资源,就需要将图形界面关闭,关闭的方法如下: 1、 打开 /etc/default/grub,修改或增加如下参数: GRUB_CMDLINE_LINUX_DEFAULT"text" GRUB_TE…...
【LeetCode】28. 找出字符串中第一个匹配项的下标(简单)——代码随想录算法训练营Day09
题目链接:28. 找出字符串中第一个匹配项的下标 题目描述 给你两个字符串 haystack 和 needle ,请你在 haystack 字符串中找出 needle 字符串的第一个匹配项的下标(下标从 0 开始)。如果 needle 不是 haystack 的一部分ÿ…...
架设一台NFS服务器
1、开放/nfs/shared目录,供所有用户查询资料 2、开放/nfs/upload目录,为192.168.xxx.0/24网段主机可以上传目录, 并将所有用户及所属的组映射为nfs-upload,其UID和GID均为210 3、将/home/tom目录仅共享给192.168.xxx.xxx这台主机…...

MySQL中根据出生日期计算年龄
创建student表 mysql> create table student( -> sid int primary key comment 学生号, -> sname varchar(20) comm…...

ABAP IDOC 2 XML
有个需求,外围系统希望我们给到一个IDOC 记录的样例,但是我们we02中并无法看到 就找了一个demo去直接展示IDOC内容 *&---------------------------------------------------------------------* *& Report Z_IDOC_TO_XML *&------------…...

什么是小程序?特点和技术架构详解
小程序是一种新的移动应用程序格式,一种结合了 Web 技术以及客户端技术的混合解决方案。 传统的原生应用运行起来比较流畅,但是也有天然的基因缺陷: 不支持动态化,发布周期长需要开发Android和iOS两套代码,开发成本高…...
边缘计算的挑战和机遇——数据安全与隐私保护
边缘计算的挑战和机遇 边缘计算面临着数据安全与隐私保护、网络稳定性等挑战,但同时也带来了更强的实时性和本地处理能力,为企业降低了成本和压力,提高了数据处理效率。因此,边缘计算既带来了挑战也带来了机遇,需要我…...
linux-等保三级脚本(1)
该脚本主要是针对 CentOS Linux 7 合规基线加固的一些配置操作,包括创建用户、安全审计配置、入侵防范配置、访问控制配置、身份鉴别策略配置等。如果您需要在脚本中添加公司网址,您可以在适当的位置添加相应的内容。不过请注意,在实际生产环…...
K8s面试题——情景篇
文章目录 一、考虑一家拥有分布式系统的跨国公司,拥有大量数据中心,虚拟机和许多从事各种任务的员工。您认为这样公司如何以与 Kubernetes 一致的方式管理所有任务?二、考虑一种情况,即公司希望通过维持最低成本来提高其效率和技术运营速度。…...

.NET 8.0 发布到 IIS
如何在IIS(Internet信息服务)上发布ASP.NET Core 8? 在本文中,我假设您的 Windows Server IIS 上已经有一个应用程序池。 按照步骤了解在 IIS 环境下发布 ASP.NET Core 8 应用程序的技巧。 您需要设置代码以支持 IIS 并将项目配…...

当前vscode环境下 多进程多线程运行情况探究
我的代码 其中在“打开图片时”、“进入子进程之前”、“子进程join前”、“进入子进程区域后”,“子进程join后”、“进入子线程区域后”分别打印了进程线程的编号和数量。 # -*- coding: utf-8 -*-# Form implementation generated from reading ui file test2.…...

使用WAF防御网络上的隐蔽威胁之命令注入攻击
命令注入攻击是网络安全领域的一种严重威胁,它允许攻击者在易受攻击的应用程序上执行恶意命令。 这种攻击通常发生在应用程序将用户输入错误地处理为操作系统命令的情况下。 什么是命令注入攻击 定义:命令注入攻击发生在攻击者能够在易受攻击的应用程…...

blender 导入到 Marvelous Designer
1) 将模型的所有部分合并为一个单独的mesh 2) 先调整计量单位: 3)等比缩放,身高调整到180cm左右 4)应用当前scale 首先,选中你要修改的物体,然后按下Ctrl-A键,打开应用…...

【Redis】AOF 源码
在上篇, 我们已经从使用 / 机制 / AOF 过程中涉及的辅助功能等方面简单了解了 Redis AOF。 这篇将从源码的形式, 进行深入的了解。 1 Redis 整个 AOF 主要功能 Redis 的 AOF 功能概括起来就 2 个功能 AOF 同步: 将客户端发送的变更命令, 保存到 AOF 文件中AOF 重写: 随着 Red…...

基于FPGA的PID算法学习———实现PID比例控制算法
基于FPGA的PID算法学习 前言一、PID算法分析二、PID仿真分析1. PID代码2.PI代码3.P代码4.顶层5.测试文件6.仿真波形 总结 前言 学习内容:参考网站: PID算法控制 PID即:Proportional(比例)、Integral(积分&…...
树莓派超全系列教程文档--(62)使用rpicam-app通过网络流式传输视频
使用rpicam-app通过网络流式传输视频 使用 rpicam-app 通过网络流式传输视频UDPTCPRTSPlibavGStreamerRTPlibcamerasrc GStreamer 元素 文章来源: http://raspberry.dns8844.cn/documentation 原文网址 使用 rpicam-app 通过网络流式传输视频 本节介绍来自 rpica…...

【JavaEE】-- HTTP
1. HTTP是什么? HTTP(全称为"超文本传输协议")是一种应用非常广泛的应用层协议,HTTP是基于TCP协议的一种应用层协议。 应用层协议:是计算机网络协议栈中最高层的协议,它定义了运行在不同主机上…...
系统设计 --- MongoDB亿级数据查询优化策略
系统设计 --- MongoDB亿级数据查询分表策略 背景Solution --- 分表 背景 使用audit log实现Audi Trail功能 Audit Trail范围: 六个月数据量: 每秒5-7条audi log,共计7千万 – 1亿条数据需要实现全文检索按照时间倒序因为license问题,不能使用ELK只能使用…...

论文浅尝 | 基于判别指令微调生成式大语言模型的知识图谱补全方法(ISWC2024)
笔记整理:刘治强,浙江大学硕士生,研究方向为知识图谱表示学习,大语言模型 论文链接:http://arxiv.org/abs/2407.16127 发表会议:ISWC 2024 1. 动机 传统的知识图谱补全(KGC)模型通过…...

ElasticSearch搜索引擎之倒排索引及其底层算法
文章目录 一、搜索引擎1、什么是搜索引擎?2、搜索引擎的分类3、常用的搜索引擎4、搜索引擎的特点二、倒排索引1、简介2、为什么倒排索引不用B+树1.创建时间长,文件大。2.其次,树深,IO次数可怕。3.索引可能会失效。4.精准度差。三. 倒排索引四、算法1、Term Index的算法2、 …...

【MATLAB代码】基于最大相关熵准则(MCC)的三维鲁棒卡尔曼滤波算法(MCC-KF),附源代码|订阅专栏后可直接查看
文章所述的代码实现了基于最大相关熵准则(MCC)的三维鲁棒卡尔曼滤波算法(MCC-KF),针对传感器观测数据中存在的脉冲型异常噪声问题,通过非线性加权机制提升滤波器的抗干扰能力。代码通过对比传统KF与MCC-KF在含异常值场景下的表现,验证了后者在状态估计鲁棒性方面的显著优…...

论文阅读:Matting by Generation
今天介绍一篇关于 matting 抠图的文章,抠图也算是计算机视觉里面非常经典的一个任务了。从早期的经典算法到如今的深度学习算法,已经有很多的工作和这个任务相关。这两年 diffusion 模型很火,大家又开始用 diffusion 模型做各种 CV 任务了&am…...

Windows电脑能装鸿蒙吗_Windows电脑体验鸿蒙电脑操作系统教程
鸿蒙电脑版操作系统来了,很多小伙伴想体验鸿蒙电脑版操作系统,可惜,鸿蒙系统并不支持你正在使用的传统的电脑来安装。不过可以通过可以使用华为官方提供的虚拟机,来体验大家心心念念的鸿蒙系统啦!注意:虚拟…...

STM32标准库-ADC数模转换器
文章目录 一、ADC1.1简介1. 2逐次逼近型ADC1.3ADC框图1.4ADC基本结构1.4.1 信号 “上车点”:输入模块(GPIO、温度、V_REFINT)1.4.2 信号 “调度站”:多路开关1.4.3 信号 “加工厂”:ADC 转换器(规则组 注入…...