python 希尔伯特变换_Python在信号与系统中的应用(1)——Hilbert变换,Hilbert在单边带包络检波的应用,FIR_LPF滤波器设计,还有逼格高高的FM(PM)调制...
多谢董老师,董老师是个好老师!
心情久久不能平静,主要是高频这门课的分析方法实在是让我难以理解,公式也背不过,还是放放吧。
最近厌恶了Matlab臃肿的体积和频繁的读写对我的Mac的损害,所以学习了一下Python这一轻量级的脚本,发现“Python自诞生那天就跟科学计算分不开”这个事实。无聊,写写心得。
配置环境什么的还是弄了几个晚上的。在Mac下用PyCharm还是很好滴,装上NumPy,SciPy等等一众免费的,很不错的Python包,就可以灰了!
1.Hilbert变换及其在单边带(SSB)包络检波的应用
定义神马的,性质神马的自己百度去。我也懒得写公式了,大家将就着看。
先定义个东西,H(t)为Hilbert变换后的时域信号,f(t)为原始时域信号。那么其包络为:
Envelop = sqrt(H^2(t)+f^2(t))。
好了,写代码什么的都简单了。
import numpy as np
import pylab as pl
import scipy.signal as signal
from scipy import fftpack
t = np.arange(0, 0.3, 1/20000.0)
x = np.sin(2*np.pi*1000*t) * (np.sin(2*np.pi*20*t) + np.sin(2*np.pi*8*t) + 3.0)
hx = fftpack.hilbert(x)
pl.subplot(221)
pl.plot(x, label=u"Carrier")
pl.plot(np.sqrt(x**2 + hx**2), "r", linewidth=2, label=u"Envelop")
pl.title(u"Hilbert Transform")
pl.legend()
然后是它的结果,看,是不是逼格高高的不可一世!~~
2.FIR_LPF设计
用Python这种动态语言写几百个参数的有限冲激响应数字低通滤波器(Finite Impulse Response-Low Pass Digital Filter),实在是太难为人家了,还是用内置的函数或者内嵌C吧。看那一长串,我还想再打一遍,有限冲激响应数字低通滤波器,逼格高高的!!
下面是代码,FIR滤波器在这里我估计参数不下100,所以内嵌吧,否则慢死。。
import numpy as np
import pylab as pl
import scipy.signal as signal
from scipy import fftpack
def h_ideal(n, fc):
return 2*fc*np.sinc(2*fc*np.arange(-n, n, 1.0))
b = h_ideal(30, 0.25)
b2 = signal.firwin(len(b), 0.6)
w, h = signal.freqz(b)
w2, h2 = signal.freqz(b2)
#pl.figure(figsize=(8,6))
pl.subplot(222)
pl.plot(w/2/np.pi, 20*np.log10(np.abs(h)), label=u"h_ideal")
pl.plot(w2/2/np.pi, 20*np.log10(np.abs(h2)), label=u"firwin")
pl.xlabel(u"Normalized Frequency Rad/Sample")
pl.ylabel(u"Magnitude (dB)")
pl.title(u"FIR Low Pass Filter")
pl.legend()
pl.subplot(224)
pl.plot(b, label=u"h_ideal")
pl.plot(b2, label=u"firwin")
pl.legend()
pl.show()
看这逼格高高的,都不说了。。
3.下面是董老师指导我的,虽然很简单。。FM调制
董老师说mf的参数调小了,我看果然是。课本不可信,给的参数都mv毫伏级,坑爹!
码代码这种小事就简单多了
import numpy as np
import pylab as pl
import scipy as sp
from scipy import integrate
from scipy import fftpack
sample_rate = 10000
t = np.arange(0, 1.0, 1.0 / sample_rate) # generate time sampling
omega_base = 40
omega_carrier = 800
mf = 1
v0 = 5
v_omega = 10
base = np.cos(omega_base * t)
pm = v0 * np.cos(omega_carrier * t + v_omega * base)
pl.plot(base)
pl.plot(pm)
pl.show()
绿的是最后的信号,蓝的是原始信号。
好了,说完了第一部分,第二部分写啥还没有想好,到时再说,嗯。
今天好娘快,晚上继续学高频。
董老师是个好人,好人一生平安。。。。。。
最近我怎么这么婆妈了。。。!!
python 希尔伯特变换_Python在信号与系统中的应用(1)——Hilbert变换,Hilbert在单边带包络检波的应用,FIR_LPF滤波器设计,还有逼格高高的FM(PM)调制...相关推荐
- python 波形包络线_Python在信号与系统中的应用(1)——Hilbert变换,Hilbert在单边带包络检波的应用,FIR_LPF滤波器设计,还有逼格高高的FM(PM)调制...
多谢董老师,董老师是个好老师! 心情久久不能平静,主要是高频这门课的分析方法实在是让我难以理解,公式也背不过,还是放放吧. 最近厌恶了Matlab臃肿的体积和频繁的读写对我的Mac的损害,所以学习了一 ...
- Python在信号与系统(1)——Hilbert兑换,Hilbert在国家统计局的包络检测应用,FIR_LPF滤波器设计,格鲁吉亚也迫使高FM(PM)调制...
谢谢董老师,董老师是个好老师. 心情久久不能平静,主要是高频这门课的分析方法实在是让我难以理解,公式也背只是,还是放放吧. 近期厌恶了Matlab臃肿的体积和频繁的读写对我的Mac的损害,所以学习了一 ...
- linux python开发环境_如何在Linux系统中搭建Python编程环境
1 在大多数的Linux系统中,基本上都默认安装了Python,也就是说,在Linux的系统中基本上是不需要安装什么软件,就可以使用Python. 下面以ubuntu操作系统为例,看看如何在Linux ...
- MATLAB—信号与系统中的应用
文章目录 一. 理论知识 1.线性系统的响应 2.微分方程的解 Ⅰ.经典解 Ⅱ.完全响应 3.零输入响应 4.零状态响应 5.冲激响应 6.阶跃响应 7.卷积求零状态响应 二.连续信号的MATLAB描 ...
- 如何理解信号与系统中的卷积
卷积 是信号与系统中一个具有重大意义的方法,曾经询问过很多学习过这门课的学生还有考研的学生,很多人根本就不知道学了个啥,个人认为如果真正要把这门课学懂讲懂要多结合控制方面的知识去理解和探索,从一个工程 ...
- 信号与系统(二):拉普拉斯变换的意义:谈H(s)、h(t)、δ(t)
一.引言 在<信号与系统>或者<自动控制理论>中,我们分析线性时不变系统,本质是求解线性常系数微分方程.我们遇到各种变换,傅里叶.拉普拉斯,他们的意义主要分为数学意义.物理意义 ...
- 通俗地理解信号与系统中的卷积
转载自:My_z 第一课什么是卷积卷积有什么用什么是傅利叶变换什么是拉普拉斯变换 引子 很多朋友和我一样,工科电子类专业,学了一堆信号方面的课,什么都没学懂,背了公式考了试,然后毕业了. 先说&quo ...
- 归一化数字角频率_说一说信号与系统中的“归一化处理“
答疑群里面有同学问,"归一化是什么意思?".关于数学上归一化严谨的定义我没有研究过.去网上查了一下,360百科上是这样定义的: "归一化是一种简化计算的方式,即将有量纲的 ...
- 信号与系统中的机器学习相关的算法的进展和理解(期末作业)
机器学习是一门多学科交叉专业,涵盖概率论知识,统计学知识,近似理论知识和复杂算法知识,使用计算机作为工具并致力于真实实时的模拟人类学习方式, 并将现有内容进行知识结构划分来有效提高学习效率. 机器学习 ...
最新文章
- SQL2K数据库开发六之表操作创建产品表products
- Jzoj3625 旅行(travel)
- PowerDesigner基本使用
- wxWidgets:wxObjectDataPtr< T >类模板用法
- 【Linux系统编程】fork()函数详解
- switch一定比if else好用吗
- gitz之忽略warning:LF will be replaced by CRLF
- 采用计算机控制的实例,计算机控制系统的实例
- 【开篇】初等数论及其核心内容
- Cocos2dx之UI组件
- VS2015 如何打包winform 安装程序
- 计算机电源+3c认证,电源适配器要不要做3C认证?怎么做
- 2021年Android发展前景怎么样?Android发展前景分析
- 4.微信支付之刷卡支付
- 2021年湖南省长沙市房地产行业发展现状分析(附开发投资额、施工面积、商品房销售、待售面积等)[图]
- 简单的java程序代码?
- Minimum Number of Refueling Stops(C++最低加油次数)
- SQLite安装配置详细教程2023版
- 图片制作二次元头像,表情很到位哦
- xshell 链接linux桌面,Xshell远程桌面连接Linux系统的操作步骤
热门文章
- matplotlib_共享坐标轴
- STM32+LWIP服务器实现多客户端连接
- 酷我音乐盒html代码,酷我音乐盒 我的音乐独一无二
- 制作PPT的软件有哪些
- 【Java】错误: 在类 Test1.Test2 中找不到 main 方法, 请将 main 方法定义为: public static void main(String[] args)的解决方案
- QSplat: 基于多分辨率处理大规模网格的点绘制系统(完整版翻译)
- 通过Python实现目标点经纬度的自动查询
- 生产环境中 Ngx_lua 使用技巧和应用的范例 - 推酷
- nanoid js字符串id生成器
- 用Python写一个文字版猫抓老鼠的游戏