
【信号分析】
文章平均质量分 58
主要做信号分析使用的专栏
月疯
得到你最想要的东西,最保险的办法,那就是你能配得上你最想要的东西。机会是留给有准备的人,运气是留给有天赋的努力者。
展开
-
Java编程EMD
一个带求包络的信号x(t),进行Hilbert变换的好 HHT(x(t)), 合成一个信号 x(t) + j*HHT( x(t) ), 然后对这个合成的信号取幅值部分 y(t)= Amp( [x(t) + j*HHT( x(t) )] ), 此时y(t)就是得到的上包络,下包络y'(t) = -y(t).1、包络线的获取:确定原始信号的极大值和极小值序列,采用三次样条曲线对极值点进行拟合,形成上下包络线;2、残余信号获取:原始信号x(t),平均信号e(t)做差,得到残余信号;原创 2024-04-25 19:14:21 · 388 阅读 · 0 评论 -
三种常见的滤波(均值、中值、高斯(权值))
均值滤波、中值滤波、高斯滤波是三种常见的平滑滤波方法,其中均值滤波和高斯滤波是线性技术,中值滤波是非线性技术。它们实现的基本原理是基本一致的,指定一个滑动窗口,计算其中的均值、中值、卷积值输出到当前位置。原创 2024-04-12 12:08:48 · 206 阅读 · 0 评论 -
EMD关于信号的重建,心率提取
因为最后一个是趋势项,我们将IMF[5]、IMF[6]、IMF[7]进行叠加,这几本接近我们的目标信号。from pyEMD import EMD (报错)执行pip uninstall pyEMD。这是IMFS的分解图9个,从低频一直到高频。原创 2024-03-30 17:23:04 · 800 阅读 · 0 评论 -
Scipy之傅里叶和DCT
离散余弦变换(DCT)是对实信号定义的一种变换,变换后在频域中得到的也是一个实信号,相比离散傅里叶变换DFT而言, DCT可以减少一半以上的计算。采样时,数据采样了T秒(T = 采样点数N / 采样频率Fs),信号的成分中周期最大也就是T秒,最低频率即“基频”就等于。假设a是时域中的周期信号,采样频率为Fs,采样点数为N。由于许多要处理的信号都是实信号,在使用FFT时,对于实信号,傅立叶变换的共轭对称性导致在频域中有一半的数据冗余。通常一个波形由振幅,相位,频率三个变量确定。,各个谐波的频率就是。原创 2023-06-25 18:59:01 · 860 阅读 · 0 评论 -
python光滑曲线测试
【代码】python光滑曲线测试。原创 2023-06-13 14:33:46 · 547 阅读 · 0 评论 -
BaseLine and find_peak
寻峰和处理baseline原创 2023-06-09 18:31:53 · 454 阅读 · 0 评论 -
PyEMD算法解析
(N. E. Huang)在美国国家宇航局与其他人于1998年创造性地提出的一种新型自适应信号时频处理方法,特别适用于非线性非平稳信号的分析处理。用原信号减去平均包络线即为所获得的新信号,若新信号中还存在负的局部极大值和正的局部极小值,说明这还不是一个本征模函数,需要继续进行“筛选”。(Empirical Mode Decomposition,缩写EMD)是由。这一步是EMD的核心步骤,也是分解出本征模函数IMFs的前提。获取本征模函数(IMF)原创 2023-06-08 11:44:54 · 968 阅读 · 0 评论 -
短时傅立叶变换分析
对于非周期的非平稳信号的处理,我们认为短时间内这个信号是平稳的,短时间内对信号进行傅里叶变换,然后对分段进行叠加原创 2022-06-21 20:14:37 · 2361 阅读 · 2 评论 -
信号滤波处理
十大经典滤波:1、限幅滤波法(又称程序判断滤波法)2、中位值滤波法3、算术平均滤波法4、递推平均滤波法(又称滑动平均滤波法)5、中位值平均滤波法(又称防脉冲干扰平均滤波法)6、限幅平均滤波法7、一阶滞后滤波法8、加权递推平均滤波法9、消抖滤波法10、限幅消抖滤波法11、卡尔曼滤波十大经典滤波信号处理的一些过程笔记:信号分析...转载 2022-05-29 16:59:41 · 1766 阅读 · 0 评论 -
信号初级谐波
谐波的英文为:harmonic周期量的傅里叶级数式中阶次大于1的分量。根据傅立叶等人提出的谐波分析方法——傅里叶变换,满足Dirichlet条件的、以T为周期的周期函数f(t),在连续点处,可以展开为常数与一组具有共同周期的正弦函数和余弦函数之和。谐波的频率等于基波的频率的整数倍,基波频率3倍的波称之为三次谐波,基波频率5倍的波称之为五次谐波,以此类推。不管几次谐波,他们都是正弦波。采用傅里叶变换,方波可以分解为基波和3、5、7、11、13……次谐波的组合,n次谐波含量是基波...原创 2022-04-23 16:43:28 · 5477 阅读 · 0 评论 -
傅里叶变换@(stft和istft)
一、窗函数之短时傅里叶变换stft前提:傅里叶变换是针对平稳信号的,但是很多实际应用中的信号都是非平稳的,如果要计算其傅里叶变换,需要假设其周期无限长,然后对这个无限长的信号做变换分析。但是这种无限长信号分析在实际中并不能实现,我们只能对有限长的局部信号进行分析。解决:1、信号在这段时间内是平稳的;2、在局部平稳信号中截取包含至少1个完整的周期。对于非周期函数,可以看成是由某个周期函数转换而来的。截取非平稳信号的局部平稳信号,然后采用傅里叶变换进行频域分析,这种分析方法称为短原创 2022-04-21 20:14:28 · 7610 阅读 · 0 评论 -
香农采样定理(奈奎斯特采样定理)
定义:为了不失真地恢复模拟信号,采样频率应该不小于模拟信号频谱中最高频率的2倍。香农采样定理,又称奈奎斯特采样定理,是信息论,特别是通讯与信号处理学科中的一个重要基本结论。采样是将一个信号(即时间或空间上的连续 函数)转换成一个数值序列(即时间或空间上的离散函数)。采样得到的离散信号经保持器后,得到的是阶梯信号,即具有零阶保持器的特性。如果信号是带限的,并且采样频率高于信号最高频率的一倍,那么,原来的连续信号可以从采样样本中完全重建出来。公式为:fs≥2fmax。采样率越高,稍后恢复的波形就越.原创 2022-03-31 12:02:50 · 25160 阅读 · 0 评论 -
心电图处理方法
scipy.misc.electrocardiogram()原创 2021-05-31 20:53:39 · 1159 阅读 · 2 评论 -
信号处理小记
去趋势:scipy直接提供了一个去趋势函数,十分的方便。scipy.signal.detrend(data, axis=-1, type='linear', bp=0, overwrite_data=False)#data:输入数据,可以为任意维度#axis,指定对哪一维度去趋势#type,可设置为'linear'即为去线性趋势,设置为'constant',则为去平均值,即为求距平#bp,断点,若设置,则为断点两侧分别去趋势,即将序列分成两个子序列各自计算#overwrite_data,原创 2021-05-31 20:34:28 · 677 阅读 · 0 评论 -
信号处理之中值滤波
代码:import matplotlib.pyplot as pltimport numpy as npimport numpy.fft as nfimport scipy.io.wavfile as wffrom scipy import signalfrom scipy.misc import electrocardiogram#读取信号数据def readtxt(path): with open(path,'r') as f: str=f.readline(原创 2021-05-30 16:12:56 · 1751 阅读 · 2 评论 -
BioSPPy - Biosignal(生物信号处理库)
地址:https://github.com/PIA-Group/BioSPPy原创 2021-05-27 21:22:11 · 1602 阅读 · 0 评论 -
pyemd实现EMD
# 导入工具库import numpy as npfrom PyEMD import EMD, Visualisation#构建信号#时间t: 为0到1s,采样频率为100Hz,S为合成信号# 构建信号t = np.arange(0,1, 0.01)S = 2*np.sin(2*np.pi*15*t) +4*np.sin(2*np.pi*10*t)*np.sin(2*np.pi*t*0.1)+np.sin(2*np.pi*5*t)# 提取imfs和剩余emd = EMD()emd..原创 2021-05-27 21:13:44 · 1054 阅读 · 1 评论 -
EMD算法原理分解信号
SSVEP信号中含有自发脑电和大量外界干扰信号,属于典型的非线性非平稳信号。传统的滤波方法通常不满足对非线性非平稳分析的条件,1998年黄鄂提出希尔伯特黄变换(HHT)方法,其中包含经验模式分解(EMD)和希尔伯特变换(HT)两部分。EMD可以将原始信号分解成为一系列固有模态函数(IMF) [1],IMF分量是具有时变频率的震荡函数,能够反映出非平稳信号的局部特征,用它对非线性非平稳的SSVEP信号进行分解比较合适。网友Aeo[2]提供了下面的算法过程分析。算法过程分析 筛选(Sifting)转载 2021-05-27 21:07:42 · 7717 阅读 · 5 评论 -
scipy.signal.find_peaks(峰值检测)
函数用法:scipy.signal.find_peaks(x, height=None, threshold=None, distance=None, prominence=None, width=None, wlen=None, rel_height=0.5, plateau_size=None)原创 2021-05-27 20:44:11 · 45408 阅读 · 8 评论 -
scipy.signal信号处理的库(笔记06)
信号处理(scipy.signal)网址:https://docs.scipy.org/doc/scipy/reference/signal.html#scipy.signal卷积 convolve(in1,in2 [,模式,方法]) 卷积两个N维数组。 correlate(in1,in2 [,模式,方法]) 将两个N维数组互相关。 fftconvolve(in1,in2 [,模式,轴]) ...原创 2021-05-21 09:53:51 · 6929 阅读 · 0 评论 -
傅里叶滤波音频文件(笔记05)
代码:import matplotlib.pyplot as pltimport numpy as npimport numpy.fft as nfimport scipy.io.wavfile as wf#傅里叶频率滤波plt.rcParams['font.sans-serif'] = ['SimHei'] # 用来正常显示中文标签plt.rcParams['axes.unicode_minus'] = False # 用来正常显示符号#1、读取音频文件,获取音频文件基本信..原创 2021-05-20 20:42:05 · 427 阅读 · 0 评论 -
信号方面概念解释(笔记04)
1、信号:信息的承载方式,数学上表示为一个或多个变量的函数(自变量通常为时间t,也可以是高度、深度等)。连续时间信号:信号函数的定义域是连续的,常用想x(t)来表示,即x是连续变量t的函数。例如,一个语音信号可以表示为声压随时间变化的函数。 离散时间信号:信号函数的定义域仅在离散时间点上取值,常用来表示,即n是离散变量的x函数。例如,经济系统中随时间变化的股票指数。2、功率和能量:3、频率:频率,是单位时间内完成周期性变化的次数,是描述周期运动频繁程度的量。单位为秒分之一。频率的单位为原创 2021-05-20 16:27:30 · 4645 阅读 · 2 评论 -
傅里叶变换滤波之生物信号滤波(笔记03)
1.txt是生物信号的原始信号,2.txt是滤波之后保存的信号原始信号的片段:。。。。。。。。。。。。。。。。。。。。。。。代码:import matplotlib.pyplot as pltimport numpy as npimport numpy.fft as nf#傅里叶频率滤波plt.rcParams['font.sans-serif'] = ['SimHei'] # 用来正常显示中文标签plt.rcParams['axes.unicode_minus'] = F..原创 2021-05-20 10:54:22 · 375 阅读 · 0 评论 -
傅里叶变换的相关函数(笔记02)
三角函数的标准式:y=Acos(ωx+θ)+ky=Acos(ωx+θ)+kAA代表振幅,函数周期是2πw2πw,频率是周期的倒数w2πw2π,θθ是函数初相位,kk在信号处理中称为直流分量。这个信号在频域就是一条竖线。我们再来假设有一个比较复杂的时域函数y=f(t)y=f(t),根据傅里叶的理论,任何一个周期函数可以被分解为一系列振幅A,频率ωω或初相位θθ正弦函数的叠加y=A1sin(ω1t+θ1)+A2sin(ω2t+θ2)+A3sin(ω3t+θ3)...转载 2021-05-18 22:04:22 · 2592 阅读 · 0 评论 -
Scipy信号分析处理(基线漂移、滤波)(笔记01)
信号处理的知识:scipy.signal.detrend(): 从信号中删除线性趋势:from scipy import signalimport matplotlib.pyplot as plt = np.linspace(0, 5, 100)x = t + np.random.normal(size=100)pl.plot(t, x, linewidth=3)pl.plot(t, signal.detrend(x), linewidth=3)效果展示:scipy.原创 2021-05-15 13:37:44 · 7918 阅读 · 0 评论 -
java对PPG的基线漂移的一种处理办法(中值滤波)
传进去所有采集的离散点//滑动均值滤波器 public static List<Double> getAverageValue(List<Double> list){ double[]start=getList(list); MovingAverageFilter maf=new MovingAverageFilter();...原创 2019-03-25 14:47:15 · 2015 阅读 · 0 评论 -
脉搏波信号峰值提取
时域脉搏波信号的特征提取:(信号的间期和脉率的提取)1、阈值法2、极值法3、腐蚀信号法(对信号求差分,然后再用阈值提取)4、拟合动态分类线法5、动态差分阈值法1、阈值法提取器脉搏信号...原创 2019-01-25 01:42:17 · 312 阅读 · 2 评论 -
java实现傅里叶变换
借助dsp-collection库实现 java 离散时间傅里叶变换。 dsp-collection 库里面的 Dft 类主要实现实数信号的傅里叶变换(变换的结果为频域复数信号),也可以进行傅里叶逆变换(变换的结果为时域实数信号)。傅里叶变换:biz.source_code.dsp.math.Complex[] result = Dft.goertzelSpectrum(data);1傅里叶逆...原创 2018-06-20 10:03:35 · 4111 阅读 · 1 评论 -
使用java实现数字滤波器
dsp-collection 库支持多种 IIR 滤波器,包括巴特沃斯,切比雪夫和贝塞尔滤波器。笔者在这里使用的是巴特沃斯滤波器。其他的请参考API 文档。仿真信号:f(t)=sin(10πt)+sin(30πt)f(t)=sin(10πt)+sin(30πt)其中包含 5Hz 和 15Hz 两个频率分量,信号的采样率为 50Hz :double[] time = new double[1...原创 2018-06-19 16:31:10 · 2594 阅读 · 0 评论