matlab fftshift_数字信号处理没有Matlab?用Python一样很爽

通常,在数字信号处理时,我们避不开matlab这个工具,因其它的强大的功能受到广大工程师的好评,也一直都是业界的不二之选。但是,matlab毕竟是商业软件,公司里如果使用的话,就需要支付高昂的费用。即使公司购买了商业版本,也不会每个人都能随时使用,这对我们平时的工作和学习将会带来很多的不便之处。


不过,除了Matlab外,还有什么不错的工具推荐呢?在这里为大家推荐的是一直很受欢迎的Python。对Python有所了解的同学就会知道,Python拥有丰富的第三方库,涉及到各个领域。应该说,没有你不知道的,只有你想不到的,它通通都有。在科学研究和数据处理上,它的应用非常的广泛。而且,他们通通都是免费的。是不是很诱人?不过,按照Python后,需要我们根据需求自己手动安装相关的第三方库,今天和大家一起学习下如何使用Python替代matlab进行数字信号处理。


f9418cf7015d9c5c145605138d1337d2.png

numpy是一个支持多维度的数组和矩阵运算库,并包含了大量的数学函数库,其科学数值运算较为高效,而被广泛应用于各种工程研发中。安装命令如下:

python -m pip install numpy

如下图,出现安装成功的提示即可。

4564f43b7a01a9e180d8ef6341ca426a.png


我们使用numpy写个代码试试吧。

import numpy as npimport numpy.matlibn1 = np.zeros((3,4), dtype=int) #创建数组并初始化为0print("n1 = ")print(n1)print(" ---------- ")n2 = np.ones((3,3), dtype=int) #创建数据并初始化为1print("n2 = ")print(n2)print("n2 * n2 = ")print(n2 * n2)print(" ---------- ")print("n3 = ")n3 = np.matlib.zeros((3,4), dtype=int) #创建矩阵并初始化为0print(n3)print(" ---------- ")n4 = np.matlib.ones((3,3), dtype=int) #创建矩阵并初始化为1print("n4 = ")print(n4)print("n4 * n4 = ")print(n4*n4)

代码运行的结果如下,上面的示例中,n1和n2是两个数组,而n3和n4是两个矩阵,不过,矩阵库在numpy.matlab中。这里初始化我们用到了zeros和ones函数,是不是和之前学习的C++的Eigen库类似?

5c7ecccaea15020a9d1cffc6bfe1f482.png

75326aa5962d50453f91aeb5bd588740.png

matplotlib是一个风格类似matlab的绘图库,有着丰厚的图表绘制功能,并且和matlab有着相似的函数,对于熟悉matlab的同学可以无缝切入。安装命令如下:

python -m pip install matplotlib
fb9db1c83df863090b7d601e7d9b8564.png

到这里我们已经安装了numpy和matplotlib这两个库,我们再结合numpy画个曲线看看,例如:y=3x+2。

import numpy as npfrom matplotlib import pyplot as pltx = np.arange(0, 10)y = 3*x + 2print("x=")print(x)print("y=")print(y)plt.plot(x, y)plt.title("y = 3x + 2")plt.show()

终端输出x,y的值:

17c87f9bf7a8061dda60cbbe4849c364.png

关于x,y的曲线图:

ca16973f7a32c34df3fca8269215a771.png

72b860ed66e4629df7a38fa5cbee7d48.png

scipy是一个开源的科学计算库,主要有最优化、线性代数、积分、插值、拟合、特殊函数、快速傅里叶变换、信号处理、图像处理、常微分方程求解器等功能。安装命令如下:

python -m pip install scipy

scipy库比上面两个要大一些,下载速度可能较慢,同学们请耐心等待。

916b8aaf52f55fa24029fc9af8d56c3d.png


按照惯例,这里可以上代码了,我们结合上面的numpy和matplotlib库写个正弦信号和正弦信号的傅立叶变换的例子。

import numpy as npfrom matplotlib import pyplot as pltimport scipy as scifs = 100 # 采样率N = 256 # 数据点数n = np.linspace(0,N-1,N)print(n)t = n / fs #时间序列x = 0.5 * np.sin(2*np.pi*15*t) + 2*np.sin(2*np.pi*40*t) #实信号y1 = sci.fft.fft(x, N) #信号傅立叶变换y2 = sci.fft.fftshift(y1)mag1 = abs(y1) #对信号取模求振幅mag2 = abs(y2)f1 = n * fs / N #频率序列f2 = n * fs / N - fs/2plt.subplot(3,1,1)plt.title("usual FFT")plt.xlabel("freq/Hz")plt.ylabel("Amp")plt.plot(f1, mag1) #随频率变化的振幅plt.subplot(3,1,2)plt.title("FFT without fftshift")plt.xlabel("Freq/Hz")plt.ylabel("Amp")plt.plot(f2, mag1) #随频率变化的振幅plt.subplot(3,1,3)plt.title("FFT after fftshift")plt.xlabel("Freq/Hz")plt.ylabel("Amp")plt.plot(f2, mag2) #随频率变化的振幅plt.show()

执行结果如下:

681fcb7468d93478f721fe1681f3e648.png

当然,我们还可以用命令查看我们安装了哪些库。

python -m pip list
4c4837831bb1918a75a751d48e6abce1.png

以上,这三个库是平时数字信号处理用到的非常重要的三个库。是不是已经心动了?大家赶快动手试下吧!

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

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

相关文章

栈,C语言实现

什么是数据结构?数据结构是什么?要了解数据结构,我们要先明白数据和结构,数据就是一些int char 这样的变量,这些就是数据,如果你是一个篮球爱好者,那么你的球鞋就是你的数据,结构就是…

Camera摄像头工作原理

回想这工作的这几年,尝尽社会的辛酸艰难,从一开始什么都没有到30万,从30万到200万,从200万到1300万,不是炫耀,我只是想通过我自己的经历告诉我的朋友们「手机像素越高,拍的照片越清晰」摄像头结…

es6一维数组转二维数组_技术图文:Numpy 一维数组 VS. Pandas Series

背景Numpy 提供的最重要的数据结构是 ndarray,它是 Python 中 list 的扩展。Pandas 提供了两种非常重要的数据结构 Series和DataFrame。Numpy 中的一维数组与 Series 相似,一维数组只是提供了从0开始与位置有关的索引,而Series除了位置索引之…

unity UI事件

由于工作需要到持续按键,所以了解了一下unity UI事件,本文主要转载于http://www.cnblogs.com/zou90512/p/3995932.html?utm_sourcetuicool&utm_mediumreferral,并对相关问题进行解释。 我们最常用到的就是unity的button组件,…

电子工程学院的师兄弟姐们们,老师叫你们回家

昨天写了很长的文章,接收到推送的同学们应该也会很开心,但是由于我的原因,需要把文章删除「你们能想到的原因肯定不是我删文的原因」,但是呢,也因为这样,又可以重写一篇,刚好可以多加点内容。后…

auto.js停止所有线程_Java多线程编程基础知识 概念介绍,以及线程状态

一、进程进程是操作系统结构的基础;是一次程序的执行;是一个程序及其数据在处理机上顺序执行时所发生的活动。操作系统中,几乎所有运行中的任务对应一条进程(Process)。一个程序进入内存运行,即变成一个进程。进程是处于运行过程中…

Linux 进程管理数据结构

文末集赞留言抽奖,我会选出留言点赞数前 3 名送出小米耳机。别刷赞啊,刷赞被举报无效,相信真的是公众号粉丝的读者,不会做这样的行为,刷赞指的是购买外挂刷,如果是转发到朋友圈和微信群的,不算刷…

如何安装python3.8_python3.8下载及安装步骤详解

1.操作系统:Windows7 64bit executable installer 2.安装步骤: 双击安装文件python-3.8.0-amd64.exe 勾选下方“Add Python 3.8 to PATH”,并选择“Customize installation”3.把Optional Features全部勾选上,点击“Next"4.A…

队列,C语言实现

什么是队列?上一篇文章写了什么是栈,用C语言实现了栈,既然说了栈,不说队列,感觉总是少了点什么,所以就顺手写一个队列,而且最近做项目也用到这个队列的代码。栈的特点是先进后出,队列…

华为hr,我尽力了

最近,一则新闻很火但是突然,又不火了,火于不火之间,时间有点短,其中猜测很大部分是gongguan原因以下为正文截图~以上为事件原文,这个是一个热点新闻,之前发了一个热点新闻,瞬间就火爆…

idea,eclipse创建多模块项目

新建一个maven项目 iead,新建是不选择archetype,新建好之后,pom中的 <packaging>pom</packaging>节点是默认的,如果不是要改成这这样子 然后选中这个项目,新建一个module,之后就和建立普通项目一样了. eclipse 是这样的 建一个普通的maven项目就可以了 这个是建好之…

python画图程序代码_少儿python编程(7)海龟画图(拓展1)

我们继续用Python的海龟库来画图吧&#xff01;上图是画一朵花的程序&#xff0c;重点是6-12行&#xff0c;使用了函数来定义drawleaf:每一掰叶子由两条弧线组成&#xff0c;每一条弧线重复画15次&#xff0c;每次前进5步&#xff0c;右转6度。看图形化代码就很清楚了&#xff…

opencv matlab三维点云,点云采样的三种方法 - 小白学视觉的个人空间 - OSCHINA - 中文开源技术交流社区...

点击上方“小白学视觉”&#xff0c;选择“星标”公众号重磅干货&#xff0c;第一时间送达编辑&#xff1a;3D视觉工坊本文由知乎作者GeometryHub授权转载&#xff0c;不得擅自二次转载。原文链接&#xff1a;https://zhuanlan.zhihu.com/p/86044055点云采样分类点云采样的方法…

C语言数组越界导致无限循环

大奖也是你们的&#xff0c;感谢支持&#xff0c;不喜欢的请轻拍。过年抽奖我还是很期待的&#xff0c;每年公司的年会抽奖的时候&#xff0c;我总是能小中一把&#xff0c;有一年我还中了个一等奖&#xff0c;不知道大家对一等奖什么概念&#xff0c;中一等奖的概率非常低&…

七月流水账

7.1-7.3 >< 7.4 看了一会儿李老大给的Caffe的教程 重配python qt vtk&#xff0c;大概是原来装了一个xxx&#xff08;忘记名字&#xff09;&#xff0c;然后位数有些不对&#xff0c;搞了好一阵 果然还是卸载重装好>< 然后又看了会儿Matlab神经网络工具箱怎么用 …

python绘制拟合回归散点图_机器学习之利用Python进行简单线性回归分析

前言&#xff1a;在利用机器学习方法进行数据分析时经常要了解变量的相关性&#xff0c;有时还需要对变量进行回归分析。本文首先对人工智能/机器学习/深度学习、相关分析/因果分析/回归分析等易混淆的概念进行区分&#xff0c;最后结合案例介绍如何利用Python进行简单线性回归…

十年经验教你如何学习嵌入式系统

一、如何学习嵌入式系统- - 嵌入式系统的概念着重理解“嵌入”的概念 &#xff0c;主要从三个方面上来理解。1、从硬件上&#xff0c;“嵌入”将基于CPU的处围器件&#xff0c;整合到CPU芯片内部&#xff0c;比如早期基于X86体系结构下的计算机&#xff0c;CPU只是有运算器和累…

php博客文章修改,wordpress博客如何快速修改文章阅读数

WordPress修改文章阅读次数可以通过插件来完成&#xff0c;下面我们以WP-PostViews插件演示如何修改文章阅读次数。WP-PostViews是一个非常常用的wordpress插件&#xff0c;主要用于文章阅读数访问量的统计&#xff0c;插件使用简单&#xff0c;直接安装启用即可&#xff0c;并…

ionic拍照,从相册选择功能

在介绍插件的使用之前&#xff0c;我们有必要先大致了解下插件的原理 一、插件工作原理分析 一个插件是如何正确地在IONIC框架下运行的呢? 前台的HTML/js代码又是如何与后面具体平台做数据交互的呢? 这个就需要对插件的工作原理及各个模块之间的流程关系有一个基本的了解。 为…

python爬虫爬图片教程_python爬虫实战之爬取京东商城实例教程

前言 本文主要介绍的是利用python爬取京东商城的方法&#xff0c;文中介绍的非常详细&#xff0c;下面话不多说了&#xff0c;来看看详细的介绍吧。 主要工具 scrapy BeautifulSoup requests 分析步骤 1、打开京东首页&#xff0c;输入裤子将会看到页面跳转到了这里&#xff0c…