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.我的问题是如何计算该系统的订单分析!?非常感谢您的帮助!
这更像是一个科学问题,而不是一个编程问题。阶次分析可以使用傅里叶变换来完成。您需要做的就是在输出中寻找对角线,即噪声频率与旋转速度成正比的位置。
在您的示例图像中,有这样一个顺序:从时间(速度)0 时的 2000 Hz 到时间(速度)150 时的 4000 Hz。之后它似乎向下反射,可能是采样不足的伪影。
那么到底是哪个顺序呢?为此,您需要知道您似乎不知道的电机转速。还有另一个较弱的阶次,从时间(速度)0 时的 3000 Hz 开始。通过两个或多个可见阶次,您也许能够推断出电机的旋转速度(通过要求频率是原始速度的整数倍) 。
无论如何,除了更高的频率分辨率之外,代码可能不需要更改。