当前位置: 首页 > news >正文

EMD算法

EMD算法原理和动图讲解:https://www.cnblogs.com/gshang/p/15842773.html

close all;%% 参数设置
fs = 25;           % 采样率 (Hz)
T = 20;             % 信号时长 (秒)
t = 0:1/fs:T-1/fs;  % 时间向量
A = 0.5;            % 呼吸信号振幅 (cm)
f_resp = 0.25;      % 呼吸频率 (Hz) [每分钟15次]
phi = pi/4;         % 初始相位 (rad)
SNR_dB = 5;         % 目标信噪比 (dB)%% 生成呼吸信号
signal_clean = A * sin(2*pi*f_resp*t + phi);%% 噪声生成与信噪比控制
% 计算信号功率
signal_power = mean(signal_clean.^2);% 根据SNR计算噪声功率
SNR_linear = 10^(SNR_dB/10);
noise_power = signal_power / SNR_linear;% 生成高斯白噪声
noise = sqrt(noise_power) * randn(size(t));%% 合成带噪声信号
signal_noisy = signal_clean + noise;%% 可视化
figure('Name' ,'生产信号');
% 时域波形
subplot(2,1,1);
plot(t, signal_clean, 'b');
title('呼吸信号时域波形:纯净信号');
xlabel('时间 (s)');
ylabel('幅度 (cm)');
grid on;
subplot(2,1,2);
plot(t, signal_noisy, 'r--');
title('呼吸信号时域波形,信噪比3db:含噪信号');
xlabel('时间 (s)');
ylabel('幅度 (cm)');% 频谱分析
figure('Name' ,'频谱分析');
N = length(signal_clean);
f = (0:N/2)*fs/N;% 计算功率谱密度
[pxx_clean, f_clean] = pwelch(signal_clean, [], [], [], fs);
[pxx_noisy, f_noisy] = pwelch(signal_noisy, [], [], [], fs);
subplot(2,1,1);
plot(f_clean, 10*log10(pxx_clean), 'b');
title('呼吸信号频谱分析 (dB/Hz):纯净信号');
xlabel('频率 (Hz)');
ylabel('功率谱密度');subplot(2,1,2);
plot( f_noisy, 10*log10(pxx_noisy), 'r--');
title('呼吸信号频谱分析 (dB/Hz):含噪信号');
xlabel('频率 (Hz)');
ylabel('功率谱密度');
grid on;%% 验证信噪比
measured_snr = 10*log10(signal_power / var(noise));
fprintf('实际信噪比: %.2f dB\n', measured_snr);% EMD分解
[IMFs, residual] = emd(signal_noisy, 'MaxNumIMF', 5);
% 可视化
figure('Name' ,'可视化');
subplot(6,1,1); 
plot(t, signal_noisy); 
title('仿真信号');
for i = 1:size(IMFs,2)subplot(6,1,i+1); plot(t,IMFs(:,i));title(['IMF_', num2str(i)]);
end
subplot(6,1,6); 
plot(t,residual); 
title('残余分量');

在这里插入图片描述在这里插入图片描述在这里插入图片描述

http://www.lqws.cn/news/206911.html

相关文章:

  • aws(学习笔记第四十三课) s3_sns_sqs_lambda_chain
  • VSCode CUDA C++进行Linux远程开发
  • 【数据结构】详解算法复杂度:时间复杂度和空间复杂度
  • R语言AI模型部署方案:精准离线运行详解
  • Golang——10、日志处理和正则处理
  • PyCharm集成Conda环境
  • Go 语言 sync.WaitGroup 深度解析
  • 使用python实现奔跑的线条效果
  • springCloud2025+springBoot3.5.0+Nacos集成redis从nacos拉配置起服务
  • 利用frp和腾讯云服务器将内网暴露至外网(内网穿透)
  • Java毕业设计:办公自动化系统的设计与实现
  • 使用有限计算实现视频生成模型的高效训练
  • Redis:现代应用开发的高效内存数据存储利器
  • 三菱变频器快速与ModbusRTU转profibusDP网关通讯案例
  • 【补题】Educational Codeforces Round 107 (Rated for Div. 2) D. Min Cost String
  • 基于ROS2,撰写python脚本,根据给定的舵-桨动力学模型实现动力学更新
  • Python-进程
  • 腾讯 ovCompose 跨平台框架发布,几年后还会有人用吗?
  • 计算机基础知识(第五篇)
  • 《光子技术成像技术》第二章 预习2025.6.7
  • WPF八大法则:告别模态窗口卡顿
  • 408第一季 - 数据结构 - 树与二叉树
  • .Net Framework 4/C# 泛型的使用、迭代器和分部类
  • stm32—ADC和DAC
  • iview中的table组件点击一行中的任意一点选中本行
  • PCA笔记
  • phosphobot开源程序是控制您的 SO-100 和 SO-101 机器人并训练 VLA AI 机器人开源模型
  • ​线路板快速打样服务中的交期管理策略:猎板PCB的极速交付实践​​
  • Redis:Hash数据类型
  • Redis线程安全深度解析:单线程模型的并发智慧