PHM技术:一维信号时序全特征分析(统计域/频域/时域)| 信号处理

目录

0 引言

1 基于统计域的时序特征分析

2 基于谱域的时序特征分析 

 3 基于时域的时序特征分析 

 4 代码分析

5 小结


0 引言

我们将探索时序特征分析,这是信号处理中的关键技术之一。信号在我们的日常生活中无处不在,从声音到图像,从传感器数据到金融市场的波动。理解信号的特征对于分类、检测和监测至关重要。因此,让我们深入了解这三类特征分析算法,它们分别基于统计域、谱域和时域。

1 基于统计域的时序特征分析


在统计域中,我们使用各种统计量来描述信号的整体特征。这些包括最大值、最小值、均值、中位数等。例如,最大值和最小值能够告诉我们信号的振幅范围,而均值和中位数则反映了信号的整体位置。此外,偏度和峰度等统计量能够描述信号分布的形状,揭示信号的非正态性。通过直方图和四分位距等进一步分析,我们可以深入了解信号的分布情况和波动性。

  • 最大值(Maximum)、最小值(Minimum)、均值(Mean)、中位数(Median):这些是描述信号整体振幅和位置的基本统计量,能够提供信号的整体特征
  • 偏度(Skewness)、峰度(Kurtosis):描述信号分布形状的统计量,可以反映信号的非正态性。
  • 直方图(Histogram)、四分位距(Interquartile Range)、绝对误差均值(Mean Absolute Deviation)、绝对误差中位数(Median Absolute Deviation):提供了信号分布的更详细信息,有助于了解信号的波动情况。
  • 均方根(Root Mean Square)、标准差(Standard Deviation)、方差(Variance):用于衡量信号的离散程度和波动性。
  • 经验分布函数百分位数(Empirical Distribution Function Percentile Count)、经验分布函数斜率(ECDF Slope):提供了信号在不同百分位数处的分布情况,有助于发现信号中的异常值或特定趋势。

2 基于谱域的时序特征分析 

谱域分析涉及将信号从时域转换为频域,以便我们能够观察信号在不同频率上的成分。这种分析的关键工具是快速傅里叶变换(FFT),它能够将信号转换为频谱表示。通过分析频率成分和能量分布,我们可以了解信号的频率特征。而小波变换则提供了对信号在不同尺度下变化的认识,例如小波绝对均值和小波标准差等特征能够描述信号的局部特性。

  • 快速傅里叶变换(Fast Fourier Transform):将信号从时域转换到频域,提供了信号在不同频率上的成分信息。
  • 傅里叶变换平均系数(FFT Mean Coefficient)、小波变换(Wavelet Transform):用于分析信号的频率成分和能量分布。
  • 小波绝对均值(Wavelet Absolute Mean)、小波标准差(Wavelet Standard Deviation)、小波方差(Wavelet Variance):描述小波变换后的信号特征,有助于了解信号在不同尺度下的变化。
  • 谱距离(Spectral Distance)、频谱基频(Spectral Fundamental Frequency)、频谱最大频率(Spectral Maximum Frequency)、频谱中频(Spectral Median Frequency)、频谱最大峰值(Spectral Maximum Peaks):提供了信号在频域上的更多详细信息,有助于分析信号的频率分布和频率成分。

 3 基于时域的时序特征分析 

时域分析涉及对信号在时间上的特征进行分析。自相关和质心等特征可以告诉我们信号在时间上的自相关性和集中程度。差分均值和差分绝对值均值等特征则描述了信号在不同时间点上的变化情况。此外,熵和波峰与波谷距离等特征可以揭示信号的周期性和波动性。

  • 自相关(Autocorrelation)、质心(Centroid):提供了信号在时间上的自相关性和集中程度。
  • 差分均值(Mean Differences)、差分绝对值均值(Mean Absolute Differences)、差分中位数(Median Differences)、差分绝对值中位数(Median Absolute Differences)、差分绝对值之和(Sum of Absolute Differences):描述信号在不同时间点上的变化情况
  • 熵(Entropy)、波峰与波谷距离(Peak to Peak Distance)、曲线覆盖面积(Area Under the Curve)、最大峰值个数(The Number of Maximum Peaks)、最小峰值个数(The Number of Minimum Peaks)、跨零率(Zero Crossing Rate):提供了信号的更多时域特征,有助于发现信号的周期性、波动性和其他变化特征

 4 代码分析

%%  生成示例一维信号
% 参数设置
fs = 1000; % 采样率
t = 0:1/fs:1; % 时间向量
f_carrier = 10; % 载波频率
A = 0.05; % 基础信号振幅% 生成多个频率分量的基础信号
f_carrier = [50, 10, 20,100,1,9,5]; % 多个载波频率
carrier_signal = zeros(size(t));
for i = 1:length(f_carrier)carrier_signal = carrier_signal + A * sin(2*pi*f_carrier(i)*t);
end% 添加表面缺陷扰动和噪声
defect_amplitude = 0.8; % 缺陷振幅
defect_location = 0.5; % 缺陷位置
defect_signal = zeros(size(t));
defect_signal(abs(t - defect_location-0.01)<0.01) = defect_amplitude;
defect_signal(abs(t - defect_location+0.01)<0.01) = -defect_amplitude;noise_amplitude =0.1; % 噪声振幅
noise_signal_with_defect = noise_amplitude * randn(size(t));
% 合并信号(有缺陷)
signal_with_defect = carrier_signal + defect_signal + noise_signal_with_defect;
% 添加无缺陷的噪声
noise_signal_without_defect = noise_amplitude * randn(size(t));
% 合并信号(无缺陷)
signal_without_defect = carrier_signal + noise_signal_without_defect;% 绘制信号图像
figure;
subplot(2,1,1);
plot(signal_with_defect);
title('Signal with Defect ');
xlabel('Distance (mm)');
ylabel('Amplitude');
axis([0 1000 -1 1])
grid on;subplot(2,1,2);
plot(signal_without_defect);
title('Signal without Defect');
xlabel('Distance (mm)');
ylabel('Amplitude');
axis([0 1000 -1 1])
grid on;%% 三类处理方法signal = signal_with_defect;% 计算基于统计域的时序特征
maximum_value = max(signal);
minimum_value = min(signal);
mean_value = mean(signal);
median_value = median(signal);
skewness_value = skewness(signal);
kurtosis_value = kurtosis(signal);
histogram_data = hist(signal, 10); % 计算直方图,分为10个箱子
interquartile_range = iqr(signal);
mean_absolute_deviation = mad(signal);
median_absolute_deviation = mad(signal, 1);
root_mean_square = rms(signal);
standard_deviation = std(signal);
variance = var(signal);
percentile_count = prctile(signal, [25, 50, 75]); % 计算25、50、75百分位数
ecdf_slope = gradient(ecdf(signal), range(signal)/numel(signal)); % 计算经验分布函数斜率% 输出基于统计域的时序特征值
disp('---基于统计域的时序特征---');
disp(['最大值(Maximum): ', num2str(maximum_value)]);
disp(['最小值(Minimum): ', num2str(minimum_value)]);
disp(['均值(Mean): ', num2str(mean_value)]);
disp(['中位数(Median): ', num2str(median_value)]);
disp(['偏度(Skewness): ', num2str(skewness_value)]);
disp(['峰度(Kurtosis): ', num2str(kurtosis_value)]);
disp(['四分位距(Interquartile Range): ', num2str(interquartile_range)]);
disp(['绝对误差均值(Mean Absolute Deviation): ', num2str(mean_absolute_deviation)]);
disp(['绝对误差中位数(Median Absolute Deviation): ', num2str(median_absolute_deviation)]);
disp(['均方根(Root Mean Square): ', num2str(root_mean_square)]);
disp(['标准差(Standard Deviation): ', num2str(standard_deviation)]);
disp(['方差(Variance): ', num2str(variance)]);
disp(['经验分布函数百分位数(Empirical Distribution Function Percentile Count): ', num2str(percentile_count)]);
disp(['经验分布函数斜率(ECDF Slope): ', num2str(ecdf_slope(1))]);% 计算基于谱域的时序特征
f_signal = fft(signal); % 计算傅里叶变换
fft_mean_coefficient = mean(abs(f_signal)); % 计算傅里叶变换系数的均值
wavelet_transform = cwt(signal, 1:64, 'cmor'); % 进行连续小波变换 确保您的 MATLAB 版本支持 cwt 函数
wavelet_absolute_mean = mean(abs(wavelet_transform(:))); % 计算小波变换的绝对均值
wavelet_standard_deviation = std(wavelet_transform(:)); % 计算小波变换的标准差
wavelet_variance = var(wavelet_transform(:)); % 计算小波变换的方差% 输出基于谱域的时序特征值
disp('---基于谱域的时序特征---');
disp(['傅里叶变换平均系数(FFT Mean Coefficient): ', num2str(fft_mean_coefficient)]);
disp(['小波绝对均值(Wavelet Absolute Mean): ', num2str(wavelet_absolute_mean)]);
disp(['小波标准差(Wavelet Standard Deviation): ', num2str(wavelet_standard_deviation)]);
disp(['小波方差(Wavelet Variance): ', num2str(wavelet_variance)]);% 计算基于时域的时序特征
autocorrelation = xcorr(signal); % 计算自相关函数
centroid = sum(t .* signal) / sum(signal); % 计算质心
mean_differences = mean(diff(signal)); % 计算差分均值
mean_absolute_differences = mean(abs(diff(signal))); % 计算差分绝对值均值
median_differences = median(diff(signal)); % 计算差分中位数
median_absolute_differences = median(abs(diff(signal))); % 计算差分绝对值中位数
sum_absolute_differences = sum(abs(diff(signal))); % 计算差分绝对值之和
entropy_value = entropy(signal); % 计算信号的熵
peak_to_peak_distance = max(signal) - min(signal); % 计算波峰与波谷距离
area_under_curve = trapz(t, signal); % 计算曲线覆盖面积
num_max_peaks = length(findpeaks(signal)); % 计算最大峰值个数
num_min_peaks = length(findpeaks(-signal)); % 计算最小峰值个数
zero_crossing_rate = sum(abs(diff(sign(signal)))) / (2 * length(signal)); % 计算跨零率% 输出基于时域的时序特征值
disp('---基于时域的时序特征---');
disp(['自相关(Autocorrelation)(前三个): ', num2str(autocorrelation(1:3))]);
disp(['质心(Centroid): ', num2str(centroid)]);
disp(['差分均值(Mean Differences): ', num2str(mean_differences)]);
disp(['差分绝对值均值(Mean Absolute Differences): ', num2str(mean_absolute_differences)]);
disp(['差分中位数(Median Differences): ', num2str(median_differences)]);
disp(['差分绝对值中位数(Median Absolute Differences): ', num2str(median_absolute_differences)]);
disp(['差分绝对值之和(Sum of Absolute Differences): ', num2str(sum_absolute_differences)]);
disp(['熵(Entropy): ', num2str(entropy_value)]);
disp(['波峰与波谷距离(Peak to Peak Distance): ', num2str(peak_to_peak_distance)]);
disp(['曲线覆盖面积(Area Under the Curve): ', num2str(area_under_curve)]);
disp(['最大峰值个数(The Number of Maximum Peaks): ', num2str(num_max_peaks)]);
disp(['最小峰值个数(The Number of Minimum Peaks): ', num2str(num_min_peaks)]);
disp(['跨零率(Zero Crossing Rate): ', num2str(zero_crossing_rate)]);

5 小结

 这些特征分析算法在实际应用中通常用于提取信号的特征,从而进行信号分类、故障检测、状态监测等任务。通过对不同域的特征进行综合分析,可以更全面地理解信号的特性和行为。

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

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

相关文章

无人机数据处理系统:原理与核心系统

一、数据处理系统的运行原理 数据获取&#xff1a;无人机在飞行过程中&#xff0c;通过搭载的传感器&#xff08;如相机、激光雷达等&#xff09;采集到各种类型的数据&#xff0c;例如图像、点云等。这些数据是后续处理和分析的基础。 数据传输&#xff1a;采集到的数据会通…

close and shutdown?

背景&#xff1a;我们要讲述的是网络编程中常用的两个API&#xff1a; #include <unistd.h> int close(int fd); #include <sys/socket.h> int shutdown(int sockfd, int how); 以及TCP的半连接&#xff0c;半打开。 shutdown函数的行为依赖第二个参数区分&#xf…

Java设计模式——职责链模式:解锁高效灵活的请求处理之道

嘿&#xff0c;各位 Java 编程大神和爱好者们&#xff01;今天咱们要一同深入探索一种超厉害的设计模式——职责链模式。它就像一条神奇的“处理链”&#xff0c;能让请求在多个对象之间有条不紊地传递&#xff0c;直到找到最合适的“处理者”。准备好跟我一起揭开它神秘的面纱…

Javascript中DOM事件监听 (鼠标事件,键盘事件,表单事件)

#DOM&#xff08;Document Object Model&#xff09;事件监听是一种机制&#xff0c;它允许 JavaScript 代码在 HTML 文档中的元素上监听特定的事件。当这些事件发生时&#xff0c;与之关联的 JavaScript 函数&#xff08;也称为事件处理函数&#xff09;就会被执行。这使得网页…

TiDB 无统计信息时执行计划如何生成

作者&#xff1a; weiyinghua 原文来源&#xff1a; https://tidb.net/blog/4c49ac0d 一、Pseudo 统计信息总体生成规则 TiDB 在表无统计信息时&#xff0c;不会进行动态采样&#xff0c;而是用静态的、预设规则以及经验假设来生成计划。用函数 PseudoTable 创建一个伪统…

服务器密码错误被锁定怎么解决?

当服务器密码错误多次导致账号被锁定时&#xff0c;解决方法需要根据服务器的操作系统&#xff08;如 Linux 或 Windows &#xff09;和具体服务器环境来处理。以下是常见的解决办法&#xff1a; 一、Linux 服务器被锁定的解决方法 1. 使用其他用户账号登录 如果有其他未被…

认识redis 及 Ubuntu安装redis

文章目录 一. redis概念二. redis应用场景二. redis的特性四. 使用Ubuntu安装redis 一. redis概念 redis 是在内存中存储数据的中间件, 用在分布式系统 redis是客户端服务器结构的程序, 客户端服务器之间通过网络来通信 二. redis应用场景 redis可用作数据库 类似MySQL, 但…

LabVIEW内燃机气道试验台测控系统

基于LabVIEW软件开发的内燃机气道试验台测控系统主要应用于内燃机气道的性能测试和数据分析&#xff0c;通过高精度的测控技术&#xff0c;有效提升内燃机的测试精度和数据处理能力。 项目背景 随着内燃机技术的发展&#xff0c;对其气道性能的精准测量需求日益增加。该系统通…

Rust vs Java:后端开发应该选哪个?

后端技术的发展迅速。根据JetBrains 2024年开发者调查,尽管Java仍然占据约34.5%的市场份额,但Rust在高性能应用中的应用逐渐增多。过去四年中,Rust在企业中的采用增长了240%(根据Stack Overflow 2024开发者调查)。随着组织更加注重效率和可扩展性,选择Rust还是Java已成为…

触觉智能亮相OpenHarmony人才生态大会2024

11月27日&#xff0c;OpenHarmony人才生态大会2024在武汉隆重举行。本次大会汇聚了政府领导、学术大咖、操作系统技术专家、高校及企业代表&#xff0c;围绕新时代背景下的操作系统人才培养进行了深入探讨&#xff0c;分享高校、企业在产学研融合方面的先进经验&#xff0c;全面…

springboot366高校物品捐赠管理系统(论文+源码)_kaic

毕 业 设 计&#xff08;论 文&#xff09; 高校物品捐赠管理系统设计与实现 摘 要 传统办法管理信息首先需要花费的时间比较多&#xff0c;其次数据出错率比较高&#xff0c;而且对错误的数据进行更改也比较困难&#xff0c;最后&#xff0c;检索数据费事费力。因此&#xff…

深入理解AIGC背后的核心算法:GAN、Transformer与Diffusion Models

深入理解AIGC背后的核心算法&#xff1a;GAN、Transformer与Diffusion Models 前言 随着人工智能技术的发展&#xff0c;AIGC&#xff08;AI Generated Content&#xff0c;人工智能生成内容&#xff09;已经不再是科幻电影中的幻想&#xff0c;而成为了现实生活中的一种新兴力…

企业网站面临的爬虫攻击及安全防护策略

在当今数字化时代&#xff0c;企业网站不仅是展示企业形象的窗口&#xff0c;更是进行商业活动的重要平台。然而&#xff0c;企业网站在日常运营中面临着多种类型的爬虫攻击&#xff0c;这些攻击不仅会对网站的正常访问造成影响&#xff0c;还可能窃取敏感数据&#xff0c;给企…

STM32的CAN波特率计算

公式&#xff1a; CAN波特率 APB总线频率 / &#xff08;BRP分频器 1&#xff09;/ (SWJ BS1 BS2) SWJ一般为1。 例如STM32F407的&#xff0c;CAN1和CAN2都在在APB1下&#xff0c;频率是42000000 如果想配置成1M波特率&#xff0c;则计算公式为&#xff1a;

《操作系统 - 清华大学》6 -3:局部页面置换算法:最近最久未使用算法 (LRU, Least Recently Used)

文章目录 1. 最近最久未使用算法的工作原理2. 最近最久未使用算法示例3.LRU算法实现3.1 LRU的页面链表实现3.2 LRU的活动页面栈实现3.3 链表实现 VS 堆栈实现 1. 最近最久未使用算法的工作原理 最近最久未使用页面置换算法&#xff0c;简称 LRU&#xff0c; 算法思路&#xff…

数据集-目标检测系列- 海边漫步锻炼人检测数据集 person >> DataBall

数据集-目标检测系列- 海边漫步锻炼人检测数据集 person >> DataBall DataBall 助力快速掌握数据集的信息和使用方式&#xff0c;会员享有 百种数据集&#xff0c;持续增加中。 需要更多数据资源和技术解决方案&#xff0c;知识星球&#xff1a; “DataBall - X 数据球…

【赵渝强老师】PostgreSQL的段、区和块

PostgreSQL的逻辑存储结构主要是指数据库集群、数据库、表空间、段、区、块等&#xff1b;同时PostgreSQL的逻辑存储结构也包括数据库中的各种数据库对象&#xff0c;如&#xff1a;表、索引、视图等等。所有数据库对象都有各自的对象标识符oid&#xff08;object identifiers&…

【YOLO系列复现】二、基于YOLOv6的目标检测:YOLOv6训练自己的数据集(史诗级详细教程)

官方模型&#xff1a;YOLOv6/README_cn.md at main meituan/YOLOv6 目录 1、模型和环境准备 1.1 模型下载 1.2 依赖环境安装 1.3 权重文件下载 1.4 环境测试 2、配置文件和数据集准备 2.1 准备数据集 2.2 配置文件准备 2.3 BUG修改 3、模型训练 3.1 模型训练 3.2 …

Flink常见面试题

1、Flink 的四大特征&#xff08;基石&#xff09; 2、Flink 中都有哪些 Source&#xff0c;哪些 Sink&#xff0c;哪些算子&#xff08;方法&#xff09; 预定义Source 基于本地集合的source&#xff08;Collection-based-source&#xff09; 基于文件的source&#xff08;…

【C语言】扫雷游戏(一)

我们先设计一个简单的9*9棋盘并有10个雷的扫雷游戏。 1&#xff0c;可以用数组存放&#xff0c;如果有雷就用1表示&#xff0c;没雷就用0表示。 2&#xff0c;排查(2,5)这个坐标时&#xff0c;我们访问周围的⼀圈8个位置黄色统计周围雷的个数是1。排查(8,6)这个坐标时&#xf…