如何在MATLAB中实现订单分析

Eng*_*ine 6 matlab signal-processing

我有一个代表电机声音的音频文件.我一直在读"正常"fft没有对机器进行有价值的分析,我应该使用Order分析来描述机器的"行为".我在增加速度的同时记录了它的声音,我将记录放在一起并计算出它的频谱.这是代码:

%% read the Audio file and plot its 
clear, clc , clf;
M = 512;
k =1 
data= 0 ;
   for i =100:5:180
    fileName =['A10_uSp0_Mic100k_2nd_V_',int2str(i),'.wav']
    [x(:,k),Fs] = audioread(fileName);
    k = k+1 ;
end
for i = 1:length(x(1,:))
    data = [data(:);x(:,i)];
end
 k = length(x(1,:));
    while k ~= 2
   data = [data(:);x(:,k)];
   k = k -1;
    end
spectrogram(data,hamming(M),M/2,0:20:4000,Fs,'yaxis');
Run Code Online (Sandbox Code Playgroud)

结果如下:

频谱图

正如您可能看到的那样,我为每个时间点将机器的速度提高了5.我的问题是如何计算该系统的订单分析!?非常感谢您的帮助!

Tri*_*ion 2

这更像是一个科学问题,而不是一个编程问题。阶次分析可以使用傅里叶变换来完成。您需要做的就是在输出中寻找对角线,即噪声频率与旋转速度成正比的位置。

在您的示例图像中,有这样一个顺序:从时间(速度)0 时的 2000 Hz 到时间(速度)150 时的 4000 Hz。之后它似乎向下反射,可能是采样不足的伪影。

那么到底是哪个顺序呢?为此,您需要知道您似乎不知道的电机转速。还有另一个较弱的阶次,从时间(速度)0 时的 3000 Hz 开始。通过两个或多个可见阶次,您也许能够推断出电机的旋转速度(通过要求频率是原始速度的整数倍) 。

无论如何,除了更高的频率分辨率之外,代码可能不需要更改。