信号与系统与MATLAB应用(一)

news2024/11/20 13:25:37

文章目录

  • 前言
  • 一、基本信号表示
    • 1、周期方波信号
    • 2、周期锯齿波信号
    • 3、指数函数信号
    • 4、抽样函数信号
    • 5、单位阶跃信号
  • 二、信号的基本运算
    • 1、信号的相加和相乘
    • 2、信号的平移
    • 3、信号的反折
    • 4、信号的尺度变换(缩展)
    • 5、信号的微分和积分
    • 未完待续...

前言

说起信号与系统,它是一门专业基础课,信号与系统是后期学习数字信号处理、通信原理、自动控制、移动通信课程的基础。
信号与系统它是专业课,但是更像是专业课程中的数学课,涉及到的数学公式很多。我学习了这一门课程让我明白了数学是描述物理现象的一个工程语言,精密、严谨,又简单,可以说数学的一个函数,便是一个信号。
信号与系统说得专业一些就是:一个或几个独立变量函数的信号都包含了某些相关现象的性质信息,而系统总是对给定的信号做出响应,从而产生另外的信号,或者产生某些所需的性质。电路作为时间函数的电压和电流就是信号的一个例子,而电路本身就是一个系统,这时电路对外加电压和电流做出响应便是信号的响应。再举一个例子,当驾驶汽车踩油门的时候,汽车的反应是加速,这时系统就是这部汽车,油门上的压力就是系统的输入,汽车的速度便是系统的响应。
学习信号与系统应该先学习高等数学、复变函数、电路分析、大学物理等知识,课程涉及到微积分、微分方程、线性代数、复变函数、泛函分析等知识,很多的数学概念会在这么课程中结合工程进行应用和介绍。
现如今,MATLAB已经发展成集科学计算、可视化与编程一体的高性能科学工程计算语言和编程开发环境,是目前世界上最流行、应用最为广泛的工程计算和仿真软件之一,几乎成为各类科学研究和工程应用中的标准工具。
本篇文章用于信号与系统在MATLAB中应用学习笔记整理而来,目的为了理解和消化基本信号与系统理论知识。

一、基本信号表示

MATLAB提供了一系列用于表示基本信号的函数,比如:

  • square(周期方波)
  • sawtooth(周期锯齿波)
  • rectpuls(非周期矩形脉冲)
  • esp(指数信号)
  • sinc(抽样函数)
  • sin(正弦信号)
  • cos(余弦信号)

1、周期方波信号

t=0:0.01:5;                 %t从0-5,步长为0.01
y=square(4*pi*t);           %产生一个周期方波
plot(t,y);                  %绘制当前二维平面图
title('周期方波');           %标题
xlabel('x');                %x轴
ylabel('y');                %y轴
grid on;                    %显示坐标网格线
xlim([-1 6]);               %设置x轴范围
ylim([-1.5 1.5]);           %设置y轴范围

在这里插入图片描述

2、周期锯齿波信号

t=0:0.001:2.5;
y=sawtooth(2*pi*30*t);
plot(t,y)
axis([0 0.2 -1 1])
grid on;

在这里插入图片描述

3、指数函数信号

x=linspace(0,1);%生成线性间距向量
%x=0:0.01:1;
y=exp(-x);
plot(x,y);
grid on;

在这里插入图片描述

4、抽样函数信号

t=-10:0.01:10;      %向量t时间范围t=t1:p:t2,p为时间间隔
f=sinc(t);   	    %sinc(t)=sin(pi*t)/pi*t
plot(t,f);          %显示该信号的时域波形
title('f(t)=Sa(t)');
xlabel('t')
axis([-10,10,-0.4,1.1]);
grid on;

在这里插入图片描述

5、单位阶跃信号

在这里插入图片描述

%定义阶跃函数
function f=heaviside(t);
%调用阶跃函数
t=-1:0.01:3;
f=heaviside(t);
plot(t,f);
axis([-1,3,-0.2,1.2]);

在这里插入图片描述

二、信号的基本运算

1、信号的相加和相乘

信号的相加是指若干信号之和,表示为
f ( t ) = f 1 ( t ) + f 2 ( t ) + . . . + f n ( t ) f(t)=f_1(t)+f_2(t)+...+f_n(t) f(t)=f1(t)+f2(t)+...+fn(t)
其相加的规则为:同一瞬时各信号的函数值和相加构成和信号在这一时刻的瞬时值。
信号相乘是指若干个信号之积,表示为
f ( t ) = f 1 ( t ) ⋅ f 2 ( t ) ⋅ . . . ⋅ f n ( t ) f(t)=f_1(t)·f_2(t)·...·f_n(t) f(t)=f1(t)f2(t)...fn(t)

f1=sin(pi*t);
f2=sin(16*pi*t);
f3=f1+f2;
f4=f1.*f2;
subplot(2,2,1);plot(t,f1);title('f1(t)');
subplot(2,2,2);plot(t,f2);title('f2(t)');
subplot(2,2,3);plot(t,f3);title('f1+f2');
subplot(2,2,4);plot(t,f4);title('f1*f2');

在这里插入图片描述

2、信号的平移

信号的平移是指信号f(t)变化为信号 f ( t + t 0 ) ( t > 0 ) f(t+t_0)(t>0) f(t+t0)(t>0)的运算。若为 f ( t + t 0 ) f(t+t_0) f(t+t0),表示信号f(t)沿t轴负方向平移 t 0 t_0 t0时间;若为 f ( t − t 0 ) f(t-t_0) f(tt0),表示信号 f ( t ) f(t) f(t)沿t轴正方向平移 t 0 t_0 t0时间。
可以记为左加右减
课本上的知识,我可以以初中学到一次函数进行举例,首先复习一下一次函数的概念:

1、一般地,如果y=kx+b(k,b是常数,k≠0),那么y叫做x的一次函数。
2、特别地,当b=0时,一次函数y=kx+b就成为y=kx(k是常数,k≠0),这时y叫做x的正比例函数.

以y=3x为例,x的取-1~3,计算结果、函数图像、MATLAB程序如下

xy=3x
-1-3
00
13
26
39
x=-1:0.1:3;
y=3*x;
plot(x,y);
title('y=3*x');
ylabel('y');
xlabel('x');
grid on;
axis([-1.5,3.5,-3.5,10]);

在这里插入图片描述
再以y=3x为例,求y=3x+1和y=3x-1,计算结果取-1~3,结果、MATLAB程序、图形如下

xy=3x+1
-1-2
01
13
27
310
xy=3x+1
-1-4
0-1
12
25
38
x=-5:0.1:5;
y=3*x;
y2=3*x+1;
y3=3*x-1;

subplot(311);
plot(x,y);
title('y=3*x');
ylabel('y');
xlabel('x');
grid on;
axis([-1.5,3.5,-3.5,10]);

%超前
subplot(312);
plot(x,y2);
title('y=3*x+1');
ylabel('y');
xlabel('x');
grid on;
axis([-1.5,3.5,-3.5,10]);

%滞后
subplot(313);
plot(x,y3);
title('y=3*x-1');
ylabel('y');
xlabel('x');
grid on;
axis([-1.5,3.5,-3.5,10]);

在这里插入图片描述
以上使用初中生都会的一次函数举例就是为了更好的理解信号平移的概念,也正像我之前说的信号即是函数的概念,而解函数便是解信号与系统。
同理,以教科书上的例题在这里插入图片描述求f(t+1),f(t-1)

解析:这个函数其实便是高中学习的分段函数,分段函数的定义是:一个函数,其定义域内,对于自变量的不同取值区间,有不同的对应方式。分段函数的解析式由几个解析式构成,并不是说分段函数是几个函数,分段函数是一个函数,其解析式一起用花括号联立,注明自变量的取值范围。分段函数的定义域是各段函数定义域的并集,值域也是各段函数值得并集。考虑到一些基础差的同学,如果分段函数不了解,可以到网上找一些资源来学习一下。

下面我使用MATLAB来描述这个分段函数信号。

t=-3:0.01:3;
ft=1/2*(t+2).*(-2<t&t<0)+(-(t-1)).*(0<=t&t<1);

subplot(311);
plot(t,ft);
title('f(t)');
grid on;
axis([-2.5,2.5,-0.1,1.1]);

%超前
subplot(312);
plot(t+1,ft);
title('f(t+1)');
grid on;
axis([-2.5,2.5,-0.1,1.1]);

%滞后
subplot(313);
plot(t-1,ft);
title('f(t-1)');
grid on;
axis([-2.5,2.5,-0.1,1.1]);

在这里插入图片描述

3、信号的反折

信号的反折是指信号f(t)变化为f(-t)的运算。从几何意义上来看,即是将f(t)以纵轴(y轴)为中心做180°的翻转。
再以一次函数y=3x举例,求出y=3(-x)

x=-5:0.1:5;
y=3*x;
y2=3*-1*x;

subplot(211);
plot(x,y);
title('y=3*x');
ylabel('y');
xlabel('x');
grid on;
axis([-10,10,-3.5,10]);

subplot(212);
plot(x,y2);
title('y=3*-1*x');
ylabel('y');
xlabel('x');
grid on;
axis([-10,10,-3.5,10]);

在这里插入图片描述
通过图像可以看到,函数关于原点对称。
同理,以教科书上的例题在这里插入图片描述求出对应波形的f(-t)

t=-3:0.01:3;
ft=1/2*(t+2).*(-2<t&t<1);
subplot(211);
plot(t,ft);
title('f(t)');
grid on;
axis([-2.5,2.5,-0.1,2]);

%反折
subplot(212);
plot(-1*t,ft);
title('f(t)');
grid on;
axis([-2.5,2.5,-0.1,2]);

在这里插入图片描述

4、信号的尺度变换(缩展)

这段知识如果放到高中数学来说便是函数图像的伸缩变换,在信号与系统中,信号的尺度变换是将信号f(t)变换为f(at)(a>0)的运算。若0<a<1,则将f(t)以原点为基准,沿横坐标轴展宽1/a倍;若a>1,则将f(t)沿横坐标压缩至1/a倍。
同样,以这个例函数为例在这里插入图片描述
分别求f(2t)和f(1/2*t)的波形。

t=-3:0.01:3;
ft=1/2*(t+2).*(-2<t&t<1);
subplot(311);
plot(t,ft);
title('f(t)');
grid on;
axis([-2.5,2.5,-0.1,2]);

subplot(312);
plot(2*t,ft);
title('f(2t)');
grid on;
axis([-4.5,2.5,-0.1,2]);

subplot(313);
plot(1/2*t,ft);
title('f(1/2*t)');
grid on;
axis([-2.5,2.5,-0.1,2]);

在这里插入图片描述

5、信号的微分和积分

到了这一块内容,就需要用到高等数学的求导和积分的公式了,关于信号的微分即是对信号f(t)求导数,体现信号的变化,表示为
y ( t ) = d f ( t ) / d t = f ′ ( t ) y(t)=df(t)/dt=f'(t) y(t)=df(t)/dt=f(t)
信号的积分即是对信号在(-∞,t)上的积分,用于与平滑信号的变化,表示为
在这里插入图片描述
例题:求信号 f ( t ) = ( 1 − t ) [ ε ( t ) − ε ( t − 1 ) ] f(t)=(1-t)[ε(t)-ε(t-1)] f(t)=(1t)[ε(t)ε(t1)]的积分和微分

syms t f2;                                          %定义符号变量?
f2=(1-t).*(heaviside(t)-heaviside(t-1));
t=-1:0.01:2;                                        %定义变量t的范围
subplot(211);
ezplot(f2,t);
title('原函数')
grid on


f=diff(f2,'t',1);                                   %对函数f2中的变量t进行一次微分(即求一阶导数)
subplot(212)
ezplot(f,t);
title('微分函数')
grid on

在这里插入图片描述

syms t f1;                                          %定义符号变量
f1=(1-t).*(heaviside(t)-heaviside(t-1));
t=-1:0.01:2;                                        %定义变量t的范围
subplot(211);
ezplot(f1,t);
title('原函数')
grid on

f=int(f1,'t');                                      %对函数f1中的变量t进行积分
subplot(212)
ezplot(f,t);
title('积分函数')
grid on

在这里插入图片描述

未完待续…

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/669458.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

WEBGIS系统整体设计

城市地下电力管线管理系统是一个基于B/S 架构的应用系统。系统的网络拓扑结构如 PostgreSQL 数据库以及文件系统作为数据服务器。另外&#xff0c;使用GeoServer 作为GIS 服务器&#xff0c;提供符合OpenGIS 规定的WFS 、WMS 等协议的GIS 服务。 遵循MVC 的分层设计思想&#x…

第三十四章 开发Productions - ObjectScript Productions - Defining Business Metrics

文章目录 第三十四章 开发Productions - ObjectScript Productions - Defining Business Metrics定义业务指标业务指标简介业务指标属性 单实例和多实例业务指标作为业务服务的业务指标 第三十四章 开发Productions - ObjectScript Productions - Defining Business Metrics 定…

Linux常用命令——ftpwho命令

在线Linux命令查询工具 ftpwho 显示当前每个ftp会话信息 补充说明 ftpwho命令ftp服务器套件proftpd的工作指令&#xff0c;用于显示当前每个ftp会话信息。 语法 ftpwho(选项)选项 -h&#xff1a;显示帮助信息&#xff1b; -v&#xff1a;详细模式&#xff0c;输出更多信…

SpringBoot使用Session防止表单重复提交(提供Gitee源码)

前言&#xff1a;在日常开发中&#xff0c;客户可能会存在反复点击提交按钮导致表单的重复提交&#xff0c;这个问题也是非常需要重视的&#xff0c;在本篇博客中&#xff0c;采用的是session、自定义注解和拦截器的方式来防止重复表单的重复提交&#xff0c;提高整体代码的优雅…

管理类联考——写作——素材篇——论说文——写作素材07——制篇:积累·习惯08——制篇:容让·宽厚

管理类专业学位联考 (写作能力) 论说文素材 07——制篇&#xff1a;积累习惯 论文说材料: 合抱之木&#xff0c;生于毫末&#xff1b;九层之台&#xff0c;起于累土&#xff1b;千里之行&#xff0c;始于 足下。 ——《老子》 一&#xff1a;道理论据 操千曲而后晓声&#…

HTTP代理出现503错误是什么原因,怎么处理

HTTP代理出现503错误表示代理服务器无法连接到目标服务器或无法获得对目标服务器的响应。这意味着您的请求无法被代理服务器处理&#xff0c;因此您无法访问所请求的网站或资源。 HTTP代理出现503错误的原因 HTTP代理出现503错误可能有以下原因&#xff1a; 1. 代理服务器与目…

基于Springboot+vue的网上商城购物系统设计与实现

博主介绍&#xff1a; 大家好&#xff0c;我是一名在Java圈混迹十余年的程序员&#xff0c;精通Java编程语言&#xff0c;同时也熟练掌握微信小程序、Python和Android等技术&#xff0c;能够为大家提供全方位的技术支持和交流。 我擅长在JavaWeb、SSH、SSM、SpringBoot等框架…

力控软件与S7-200SMART无线PPI通信

在实际系统中&#xff0c;人机界面与PLC通常不在一起&#xff0c;中心计算机一般放置在控制室&#xff0c;而PLC安装在现场车间&#xff0c;二者之间距离往往从几十米到几千米。如果布线的话&#xff0c;需要挖沟施工&#xff0c;比较麻烦&#xff0c;这种情况下比较适合采用无…

awk常用用法详解

作为运维工程师&#xff0c;使用awk来处理日常工作中的文本数据是很常见的。以下是一些常见的awk用法&#xff0c;可以帮助你更高效地处理文本数据&#xff1a; 目录 1. 查看文件的行数 2. 过滤数据 3. 统计数据 4. 格式化输出 1. 查看文件的行数 使用awk可以很快地查看文…

sed命令常用用法详解

sed 是一款流式文本编辑器&#xff0c;通常被用来编辑文本文件、数据流以及管道输入等。作为运维工程师&#xff0c;我们可以使用sed来快速处理文本数据。以下是sed的一些常见用法&#xff1a; 目录 1. 替换文本 2. 插入和删除行 3. 格式化输出 总 结&#xff1a; 1. 替换…

C++基础(6)——类和对象(运算符重载)

前言 本文主要介绍了C中运算符重载的基本知识。 4.5.1&#xff1a;加号运算符重载&#xff08;成员函数和全局函数都可实现&#xff09; 运算符重载&#xff1a;对已有的运算符重新进行定义&#xff0c;赋予其另一种功能&#xff0c;以适应不同的数据类型 1&#xff1a;成员…

如何使用 RestTemplate 调用 RESTful API

如何使用 RestTemplate 调用 RESTful API&#xff1f; 在开发 Web 应用程序时&#xff0c;调用 RESTful API 是一个常见的任务。为了调用 RESTful API&#xff0c;我们需要使用 HTTP 协议向 API 发送请求&#xff0c;并解析 API 返回的响应。为了简化这个过程&#xff0c;可以…

为生信写的Python简明教程 | 视频6

开源生信 Python教程 生信专用简明 Python 文字和视频教程 源码在&#xff1a;https://github.com/Tong-Chen/Bioinfo_course_python 目录 背景介绍 编程开篇为什么学习Python如何安装Python如何运行Python命令和脚本使用什么编辑器写Python脚本Python程序事例Python基本语法 数…

【前端特效篇】过渡与动画

变形和动画都是前端开发过程中&#xff0c;用来提高用户体验的一种方式。增加一些动效&#xff0c;可以使页面看起来不那么枯燥无味。 一、变形 transform transform 属性应用于元素的2D或3D转换。这个属性允许你将元素旋转&#xff0c;缩放&#xff0c;移动&#xff0c;倾斜…

opencloudos安装nginx新版本

opencloudos基本上完全兼容centos的操作&#xff0c;源管理方式也适用的yum。 ​ 装了一个opencloudos之后&#xff0c;想安装一下nginx。 默认的情况下安装使用&#xff1a; yum install nginx不过默认安装的是 1.14 版本&#xff0c;这个版本有几个 http 的漏洞&#xff…

【JUC进阶】03. Java对象头和内存布局

1、前言 为了后面更好的学习锁优化以及运作过程&#xff0c;需要我们对HotSpot虚拟机的Java对象内存布局有一定的了解&#xff0c;也作为技术储备。 2、对象的内存布局 在HotSpot虚拟机中&#xff0c;对象在堆内存中存储的布局可以划分为三个部分&#xff1a;对象头&#xf…

逍遥子All in阿里云,阿里“压舱石”与“秘密武器”接任

激荡中的阿里&#xff0c;又宣布了组织变革的最新进展&#xff1a;张勇将在2023年9月10日卸任阿里巴巴控股集团董事会主席兼CEO职务&#xff0c;此后将专职担任阿里云智能集团董事长兼CEO。蔡崇信将接任阿里集团董事长&#xff0c;吴泳铭出任阿里集团CEO并继续兼任淘天集团董事…

Linux 学习记录37(C高级篇)

Linux 学习记录37(C高级篇) 本文目录 Linux 学习记录37(C高级篇)一、常见的shell解析器二、变量1. shell脚本外部传参2. 输入输出(1. 输出(2. 输入 3. 命令置换符4. shell中的数组 三、shell中的算数运算1. (())运算2. $[ ]运算3. let运算4. expr指令(1.数据运算(3. 字符运算 四…

STM32单片机(七)ADC模拟数字转换器----第二节:ADC模数转换器练习(AD单通道和AD多通道)

❤️ 专栏简介&#xff1a;本专栏记录了从零学习单片机的过程&#xff0c;其中包括51单片机和STM32单片机两部分&#xff1b;建议先学习51单片机&#xff0c;其是STM32等高级单片机的基础&#xff1b;这样再学习STM32时才能融会贯通。 ☀️ 专栏适用人群 &#xff1a;适用于想要…

港科夜闻|香港科大(广州)INNOTECH创科嘉年华暨周年庆典隆重举行

关注并星标 每周阅读港科夜闻 建立新视野 开启新思维 1、香港科大(广州)INNOTECH创科嘉年华暨周年庆典隆重举行。6月16日&#xff0c;在《广州南沙深化面向世界的粤港澳全面合作总体方案》印发一周年之际&#xff0c;作为《南沙方案》发布后落成的第一个重大项目&#xff0c;香…