基于短时傅里叶变换域的一维信号邻域降噪方法(MATLAB)

news2024/11/17 11:57:45

基于傅里叶变换的信号频域表示及能量频域分布揭示了信号在频域的特征,但傅里叶变换是一种整体变换,只能了解信号的全局特性,不能有效检测信号频率随时间的变化情况。只有把时域和频域结合起来才能更好地反映非平稳信号的特征。时频分析的基本思想是设计时间和频率的联合函数,同时描述信号在不同时间和频率的能量密度或强度。时频分析以联合时频分布的形式来表示信号的特性,克服了傅里叶分析时域和频域完全分离的缺陷,可以较准确地定位某一时刻出现哪些频率分量,以及某一频率分量分布在哪些时刻上。线性时频分析方法主要有:短时傅里叶变换、Gabor变换、小波变换、S 变换等。20世纪40年代Koenig提出了语谱图的方法。短时傅里叶变换由于实现简单已成为分析非平稳信号的有力工具。

STFT 的含义可解释为:在时域用窗函数去截信号h,假定h在窗函数的一个短时间间隔内是平稳的,对截下来的局部信号作傅里叶变换,即得到在t 时刻该段信号的傅里叶变换。不断地移动t,即不断地移动窗函数w的中心位置,可得到不同时刻的傅里叶变换。短时傅里叶变换实际上是一类加窗的傅里叶变换,用窗口函数w把信号划分成许多时间间隔,把每一时间间隔内的信号看作平稳信号,用傅里叶变换分析每一时间间隔,确定在不同时间间隔存在的频率,研究局部时间范围的频域特征。STFT 的优点是:物理意义明确,对整个信号采用单一分辨率进行研究,可以反映信号的整体时频趋势;由于其概念直接,算法简单,实现容易,已经成为研究非平稳信号十分有力的工具,在许多领域(如时变滤波、提高分辨率、地震旋回分析和瞬时属性提取等)得到广泛的应用。

基于此,提出一种基于短时傅里叶变换域的一维信号邻域降噪方法,该方法使用最小控制递归平均方法估计噪声水平,并在STFT域使用Stein无偏风险估计降噪,部分代码如下:

function STFTcoef = STFT(f, time_win, factor_redund, f_sampling)
%
% 1D Windowed Fourier Transform. 
%
% Input:
% - f: Input 1D signal.
% - time_win: window size in time (in millisecond).
% - factor_redund: logarithmic redundancy factor. The actual redundancy
%   factor is 2^factor_redund. When factor_redund=1, it is the minimum
%   twice redundancy. 
% - f_sampling: the signal sampling frequency in Hz.
%
% Output:
% - STFTcoef: Spectrogram. Column: frequency axis from -pi to pi. Row: time
%   axis. 
%


% Check that f is 1D
if length(size(f)) ~= 2 | (size(f,1)~=1 && size(f,2)~=1)
    error('The input signal must 1D.');
end

if size(f,2) == 1
    f = f';
end

% Window size
size_win = round(time_win/1000 * f_sampling);

% Odd size for MakeHanning
if mod(size_win, 2) == 0
    size_win = size_win + 1;
end
halfsize_win =  (size_win - 1) / 2;

w_hanning = MakeHanning(size_win); 

Nb_win = floor(length(f) / size_win * 2);

% STFTcoef = zeros(2^(factor_redund-1), size_win, Nb_win-1);
STFTcoef = zeros(size_win, (2^(factor_redund-1) * Nb_win-1));

shift_k = round(halfsize_win / 2^(factor_redund-1));
% Loop over 
for k = 1 : 2^(factor_redund-1)    
    % Loop over windows
    for j = 1 : Nb_win - 2 % Ingore the last few coefficients that do not make a window
        f_win = f(shift_k*(k-1)+(j-1)*halfsize_win+1 : shift_k*(k-1)+(j-1)*halfsize_win+size_win);
        STFTcoef(:, (k-1)+2^(factor_redund-1)*j) = fft(f_win .* w_hanning');
    end
end
%完整代码可由知乎学术咨询获得https://www.zhihu.com/consult/people/792359672131756032

出图如下:

完整代码可由知乎学术咨询获得:

工学博士,担任《Mechanical System and Signal Processing》《中国电机工程学报》等期刊审稿专家,擅长领域:现代信号处理,机器学习/深度学习,时间序列分析/预测,电气设备(电机,变压器等)表面缺陷检测、电气设备(电机,变压器等)异常检测、电气设备(电机,变压器等)故障诊断与健康管理PHM、电气设备(电机,变压器等)剩余使用寿命预测等。

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

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

相关文章

机器学习 - 梯度下降算法推导

要逐步推导多变量线性回归的梯度计算过程,我们首先需要明确模型和损失函数的形式,然后逐步求解每个参数的偏导数。这是梯度下降算法核心部分,因为这些偏导数将指导我们如何更新每个参数以最小化损失函数。 模型和损失函数 考虑一个多变量线…

Linux:进程通信(三)信号的捕捉

目录 一、信号捕捉函数 1、signal函数 2、sigaction函数 二、用户态与内核态 1、用户态 2、内核态 用户态与内核态转换 三、volatile关键字 四、SIGCHLD信号 一、信号捕捉函数 1、signal函数 signal函数是C语言标准库中的一个函数,用于处理Unix/Linux系…

web自动化系列-selenium执行js脚本|截图|识别验证码(十五)

1.执行脚本 如果你定位的元素通过各种方法都无法完成页面操作,最后的方法就是通过操作js脚本来完成 。 在selenium中提供了一个方法 ,这个可以方法可以自行JS的脚本 。具体为: execute_script(js脚本) : js脚本代表要执行的脚本…

OC类与对象(下)

OC类与对象(下) 文章目录 OC类与对象(下)不是包装类的NSValue 和NSNumber处理对象打印对象和description方法 和 isEqual方法 类别类别语法部分利用类别进行模块化设计使用类别来调用私有方法 类的扩展协议与委托规范,…

BLIP和BLIP2 论文讲解

文章目录 BLIPIntroductionMethod模型架构预训练目标字幕和过滤(Capfilt) BLIP2IntroductionMethod模型结构Q-Former预训练第一阶段Q-Former预训练第二阶段 BLIP 论文: 《BLIP: Bootstrapping Language-Image Pre-training for Unified Visio…

Unity打开安卓设备不同的设置面板

1,打开安卓设备不同的设置面板,我还贴心的把Android官网的链接放下面了 2,使用也很方便:unity按钮事件上拖这个脚本,注册MyOpenAndroidSettings方法,参数 填 和枚举值相应的数字 // 功能:打开…

【c++】线程池的原理及实现

💻文章目录 📄前言线程池的原理概念工作原理 线程池的实现线程池的基础结构任务队列的实现工作线程的实现 线程池的应用与拓展线程池的拓展 📓总结 📄前言 不知道各位是否有试过点进限时抽奖网站、抢票网站呢?你是否好…

静态分析-RIPS-源码解析记录-02

这部分主要分析scanner.php的逻辑,在token流重构完成后,此时ini_get是否包含auto_prepend_file或者auto_append_file 取出的文件路径将和tokens数组结合,每一个文件都为一个包含require文件名的token数组 接着回到main.php中,此时…

一款功能强大的网络安全综合工具-PotatoTool

一、 简介 这款工具是一款功能强大的网络安全综合工具,旨在为安全从业者、红蓝对抗人员和网络安全爱好者提供全面的网络安全解决方案。它集成了多种实用功能,包括解密、分析、扫描、溯源等,为用户提供了便捷的操作界面和丰富的功能选择。 二…

《Fundamentals of Power Electronics》——状态空间平均法

文献中出现了许多交流变换器建模技术,包括电流注入法、电路平均法和状态空间平均法。尽管给定方法的支持者可能更喜欢用特定形式表示最终结果,但几乎所有方法的最终结果都是等效的。所有人都会赞同,平均和小信号线性化是PWM变换器建模的关键步…

厚德提问大佬答4:AI绘画生成的心得

遇到难题不要怕!厚德提问大佬答! 厚德提问大佬答 你是否对AI绘画感兴趣却无从下手?是否有很多疑问却苦于没有大佬解答带你飞?从此刻开始这些问题都将迎刃而解!你感兴趣的话题,厚德云替你问,你解…

Element-plus修改input的placeholder文字颜色

需求 代码 .el-input__inner::placeholder {color: #666f8d !important; }

图像处理--空域滤波增强(原理)

一、均值滤波 线性滤波算法,采用的主要是邻域平均法。基本思想是使用几个像素灰度的某种平均值来代替一个原来像素的灰度值。可以新建一个MN的窗口以为中心,这个窗口S就是的邻域。假设新的新的像素灰度值为,则计算公式为 1.1 简单平均法 就是…

堆的应用2——TOPK问题

TOPK问题 TOP-K问题:即求数据结合中前K个最大的元素或者最小的元素,一般情况下数据量都比较大。 比如:专业前10名、世界500强、富豪榜、游戏中前100的活跃玩家等。 情况1——数据量小 对于Top-K问题,能想到的最简单直接的方式就…

品鉴中的文化碰撞:如何理解和欣赏不同文化背景下的红酒

红酒作为世界各地广泛生产的产品,具有丰富的文化内涵。不同国家、地区和民族的红酒文化各具特色,反映了当地的历史、传统、习俗和生活方式。在品鉴云仓酒庄雷盛红酒时,理解和欣赏不同文化背景下的红酒是提升品鉴体验的重要一环。 首先&#x…

【Java orm 框架比较】九 新增wood框架对比

【Java orm 框架比较】九 新增wood框架对比 本次新增wood 框架测试 测试数据存储、分页查询,文档及框架比较稳定半天时间加入测试使用 迁移到(https://gitee.com/wujiawei1207537021/spring-orm-integration-compare) orm框架使用性能比较…

【STM32 |GPIO】GPIO结构、GPIO输出

目录 GPIO简介 GPIO的基本结构 GPIO位结构(每一位的具体电路结构) 输入 上拉和下拉电阻 斯密特触发器 ​编辑 输出 GPIO模式 ​编辑 浮空输入、上拉输入、下拉输入 模拟输入 开漏输出和推挽输出 复用开漏输出和复用推挽输出 LED和蜂鸣器…

代码随想录算法训练营第36期DAY22

DAY22 654最大二叉树 自己做的时候忽略了:nums.length>1的题给条件。所以每次递归都要判断是否size()>1,不要空的。 /** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *rig…

JSpdf,前端下载大量表格数据pdf文件,不创建dom

数据量太大使用dom》canvas》image》pdf.addimage方法弊端是canvas超出 浏览器承受像素会图片损害,只能将其切割转成小块的canvas,每一次调用html2canvas等待时间都很长累积时间更长,虽然最终可以做到抽取最小dom节点转canvas拼接数据,但是死…

[附源码+视频教程]暗黑纪元H5手游_架设搭建_畅玩三网全通西方3D世界_带GM

本教程仅限学习使用,禁止商用,一切后果与本人无关,此声明具有法律效应!!!! 教程是本人亲自搭建成功的,绝对是完整可运行的,踩过的坑都给你们填上了 一. 演示视频 暗黑纪…