关于功率谱密度,可以参考如下文章:
https://zhuanlan.zhihu.com/p/417454806
在实际应用中,一个信号我们不可能获得无穷长时间段内的点,对于数字信号,只能通过采样的方式获得N个离散的点。实际信号基本上是随机信号,由于不可能对所有点进行考察,我们也就不可能获得其精确的功率谱密度,而只能利用谱估计的方法来“估计”功率谱密度。
本项目采用功率谱密度分析对旋转机械进行故障诊断,运行环境为MATLAB R2021b。
actualPath = pwd;
savePath = fullfile(actualPath, 'Signal');
x = what(savePath);
x = x.mat;
length(x)
figure
for ii = 1:length(x)
load(fullfile(savePath,x{ii,1}));
subplot(3,1,ii)
plot(data.datensatz(:,1),'k')
title(['Signal ',num2str(ii)])
xlim([0 16*10^4])
xlabel('Data Points')
ylabel('Signal Data in ms^{-2}')
% yline(M.mean_m(ii,1),'g')
% yline(M.rms_m(ii,1),'r')
% legend('signal','Mean','RMS')
end
tic % Stopwatch Timer to know the speed
rawdata = cell(1,3);
fre = zeros();
newLoad = 1;
if newLoad == 1
for ii = 1:length(x)
load(fullfile(savePath,x{ii,1}));
rawdata{ii} = data.datensatz(:,1);
fre(ii) = data.fn;
M.var_m(ii,1) = var(data.datensatz(:,1));
M.rms_m(ii,1) = rms(data.datensatz(:,1));
M.mean_m(ii,1) = mean(data.datensatz(:,1));
M.kurt_m(ii,1) = kurtosis(data.datensatz(:,1));
M.p2r_m(ii,1) = peak2rms(data.datensatz(:,1));
M.p2p_m(ii,1) = peak2peak(data.datensatz(:,1));
M.quant_m(ii,1) = quantile(data.datensatz(:,1),0.5);
figure
plot(data.datensatz(:,1),'k')
title(['Signal',num2str(ii)])
xlim([0 16*10^4])
xlabel('Data Points')
ylabel('Signal Data in ms^{-2}')
yline(M.mean_m(ii,1),'g')
yline(M.rms_m(ii,1),'r')
yline(M.p2r_m(ii,1),'c')
yline(M.p2p_m(ii,1),'y')
legend('signal','Mean','RMS','P2R','P2P')
end
save machinefeatures M
elseif newLoad == 0
load machinefeatures
end
完整代码:https://mbd.pub/o/bread/ZJmYkptx
知乎学术咨询:
https://www.zhihu.com/consult/people/792359672131756032?isMe=1
toc
擅长领域:现代信号处理,机器学习,深度学习,数字孪生,时间序列分析,设备缺陷检测、设备异常检测、设备智能故障诊断与健康管理PHM等。