【信号与系统-可视化】基本信号的产生( Python Numpy和Matplotlib实现)
信号与系统—基本信号的产生
Python Numpy和Matplotlib实现
前言
通过Python的Numpy库和Scipy库可以用于产生基本的信号,如阶跃信号,
指数信号,脉冲信号等等。 本次实验版本Python=3.6.5, numpy=1.14.5, scipy=1.1.0,
matplotlib= 3.1.1
Numpy与Matplotlib中相关绘图API Reference就不多说了,相信大多数博客和官网文档中都写得很详细了。
导入 需要的 library 库
import numpy as np # 科学计算
import matplotlib.pyplot as plt # 画图
import scipy.signal as sg # 导入 scipy 的 signal 库 命名为 sg
import warnings
warnings.filterwarnings(“ignore”) # 去掉常规警告
阶跃信号
# 阶跃信号
t = np.linspace(-1, 1, 500, endpoint=False) # 产生-1~1的500个点
plt.plot(t, np.array(t>0, dtype=np.int)) # 取t为x轴的分布, t当中大于0的部分为y轴的分布 (即当x<0时y=0,当y>0时y=1)
plt.grid()
_ = plt.ylim(-0.5, 1.5)
plt.show()
连续指数信号
# 连续指数信号
# 产生随时间衰减的指数信号
t = np.linspace(0, 5, 5000, endpoint=False)# 定义时间序列
plt.plot(t, 2*np.exp(-1*t))# 绘制随时间衰减的指数信号图
plt.grid()
plt.show()
连续正弦信号
import numpy as np
import matplotlib
from matplotlib import pyplot as plt
t = np.linspace(0, 1, 500, endpoint=True)
A = 1
phi = np.pi / 6
f = 10
plt.plot(t, A*np.sin(t * 2 * np.pi * f + phi))
plt.title("Continuous sinusoidal signal",)
plt.grid()
plt.show()
连续矩形脉冲信号
利用Python产生高度为1、宽度为4、延时2秒、 关于t=0对称的矩形脉冲信号的矩形脉冲信号的Python程序如下:
# 连续矩形脉冲信号
def rect_wave(t, c, c0): # start = c0, breadth = cif t >= (c+c0):r = 0.0elif t < c0:r = 0.0else:r = 1return rx = np.linspace(-4, 8, 1000)
y = np.array([rect_wave(t, 4.0, -2.0) for t in x])
_ = plt.ylim(-0.2, 1.2)
plt.plot(x, y)
plt.grid()
plt.show()
连续周期矩形波信号
# 连续周期矩形波信号
t = np.linspace(0, 1, 500, endpoint=False)
plt.plot(t,scipy.signal.square(2*np.pi*5*t)) # 2*pi*w*t
plt.ylim(-2, 2)
plt.grid()
plt.show()
连续抽样信号
# 连续抽样信号
t = np.linspace(-10, 10, 500, endpoint=False)
plt.plot(t, np.sinc(t))
plt.grid()
plt.show()
单位脉冲序列
# 单位脉冲序列
n = np.linspace(-4, 21, 25, endpoint=False)
x = np.append(np.zeros((1, 7)), np.ones((1, 1))) # 先产生7个0点,1个1点
x = np.append(x, np.zeros((1,17)))
plt.stem(n, x, use_line_collection=True)
plt.grid()
plt.show()
单位阶跃序列的产生
n = np.linspace(-4, 21, 25, endpoint=False) # 定义时间序列
x = np.append(np.zeros((1,7)), np.ones((1,18))) # 产生单位阶跃序列
plt.stem(n, x, use_line_collection=True) # 绘制单位阶跃序列信号图像
plt.grid() # 显示网格
plt.show()
指数序列
# 指数序列的产生
n = np.linspace(-4, 21, 25, endpoint=False) # 定义时间序列
x = 0.3*np.power(1/2, n) # 产生离散指数序列
plt.stem(n, x, use_line_collection=True) # 绘制离散指数序列信号图像
plt.grid() # 显示网格
plt.show() # 显示图像
正弦序列
# 正弦序列的产生
n = np.linspace(-50, 51, 101, endpoint=False) # 定义时间序列
omega = np.pi/10 # 频率
x = 0.3*np.sin(omega*n+ np.pi/5) #产生正弦序列
plt.stem(n, x, use_line_collection=True) # 绘制正弦序列信号图像
plt.grid() # 显示网格
plt.show() # 显示图像
离散周期矩形波序列
n = np.linspace(-10, 11, 21, endpoint=False) # 定义离散时间序列
rad = np.pi / 4 # 基波周期 N=8
plt.stem(n, sg.square(rad * n, 0.5)) # 绘制离散周期方波图像
plt.xticks(np.arange(-10, 10, step=5.0)) # 横坐标间隔
plt.grid() # 显示网格
plt.show() # 显示图像
【信号与系统-可视化】基本信号的产生( Python Numpy和Matplotlib实现)相关推荐
- 信号与系统——傅里叶变换☞一维信号
信号与系统--傅里叶变换☞一维信号 0. 引言 1. 广义傅里叶级数 1.1 矢量的正交分解 1.1.1 二维空间的矢量正交分解 1.1.2 n维空间的矢量正交分解 1.2 信号的正交分解 2. 周期 ...
- 信号与系统matlab pdf,信号与系统及MATLAB实现.pdf
<信号与系统>实验指导书 <信号与系统及MATLAB 实现> 实验指导书 信息工程学院实验中心 2009 年3 月 1 <信号与系统>实验指导书 前 言 长期以来, ...
- 信号与系统 计算机,《信号与系统》计算机练习——利用MATLAB
译者的话 前言 第1章 信号与系统 1.1 表示信号的基本MATLAB函数 1.2 离散时间正弦信号 1.3 离散时间信号时间变量的变换 1.4 离散时间系统性质 1.5 实现一阶差分方程 1.6 连 ...
- 信号与系统 chapter9 关于信号与系统中微分方程的求解
微分方程的求解 许多同学之所以觉得信号与系统难的原因之一就在于它的数学推导,特别是对于一些高等数学基础比较薄弱的同学来说,且不说后面的求解傅里叶变换部分,目前的LTI连续系统微分方程的求解,已经是的有 ...
- 信号与系统 chapter1 常见信号及其变换
什么是信号? 它的定义及其宽泛,但在我们电子通信工程中,我们可以把它看成一种波形:在数学上,我们可以把它看成一个函数.说到函数,函数又分为离散与连续,信号也是一样,分为离散信号与连续信号.连续信号如一 ...
- 领悟《信号与系统》之 信号与系统概论
信号与系统概论 一.信号与系统基本概念 0. 信息是什么? 1. 信号是什么? 2. 系统是什么? 3. 信号与系统学的什么? 二.常见的信号与系统实例 三.信号与系统分析的意义 在<信号与系统 ...
- 领悟《信号与系统》之 信号与系统的描述-上节
信号与系统的描述-上节 一.信号分类 1. 一维信号和多维信号 2. 确定信号和随机信号 3. 连续时间信号和离散时间信号 4. 周期信号和非周期信号 5. 能量信号和功率信号 二.常见工程信号 1. ...
- 领悟《信号与系统》之 信号与系统的描述-下节
信号与系统的描述-下节 一.信号的基本运算 1. 信号的基本运算 1. 加法 .减法 2. 乘法.除法 3. 微分 .差分 4.积分.迭分 2. 关于时间(自变量)的运算 1. 位移 2. 反折 3. ...
- 信号与系统——阶跃信号与冲激信号
我们在学习阶跃信号与冲激信号之前,我们首先要知道什么是奇异信号? 什么是奇异信号? 解释:函数本身有不连续点(跳变点)或其导数与积分有不连续点的一类函数统称为奇异信号或奇异函数.而我们下面所要介绍的单 ...
- 信号与系统实验:信号抽样
已知一个连续时间信号f(t)=sinc(t)f(t)=sinc(t)f(t)=sinc(t),取最高有限带宽频率fm=1Hzf_m=1Hzfm=1Hz (1)分别显示原连续信号波形和 fs=f ...
最新文章
- 【播放器SDK】Android如何实现固定竖屏播放视频
- python小项目推荐项目-推荐 10 个有趣的 Python 项目
- mysql中b树索引_Mongo和Mysql中的B树索引
- 中有冒号 文件路径_用Matlab脚本文件实现Excel文件的合并
- MySQL回闪_MySQL进行BINLOG回闪
- Vue.js仿QQ音乐(移动端)
- python opencv用法中文教程
- 马斯克如何通过生小孩统治世界?
- Python注释的写作笔记
- python离线安装flask_离线环境下安装flask
- 决策树(二)--C4.5
- 深入理解javascript内部原理(2): 变量对象(Variable object)
- php社工源码,社工库源码搜集
- 产品经理学习一(定义、分类、成员配合、调研、3D文档、竞品分析、SWOT分析)
- 支持向量机原理与高斯核函数
- 喧喧发布 2.5.3 版本,主要提升系统稳定性,优化交互体验
- SQL语句如何精准查找某一时间段的数据
- Ubuntu无法修改挂载硬盘
- MT6735 8.1 Secure Boot 签名
- 「 右键管家」使用指南
热门文章
- Lingo基础语法笔记
- python入门基础语法答案_第一阶段:Python开发基础 Python基础语法入门 day03 课后作业...
- setuna快捷键_Setuna 办公截图神器
- Java 将Excel转为XML
- 【离散数学】数理逻辑 第一章 命题逻辑(2) 命题公式及其符号化、命题公式的赋值
- 电源大师课笔记 3.3
- 聚宽 get_price 多个股票数据_上证指数(000001)股票历史数据,下载上证指数(000001历史数据_股票股市历史数据下载股票数据网...
- 《惢客创业日记》2019.05.20(周一)向技术大牛请教(二)
- 关于IDM下载器免费注册这件事
- 白话阿里巴巴Java开发手册高级篇