I have an audio file that represents the sound of a motor. I've been reading that the 'normal' fft doesn't deliver a valuable analysis about the machine, and that I should use the Order analysis to describe the 'behavior' of the machine. I recorded its sound while incrementing its speed, and I put the records together and calculated its spectogram. Here is the code for that:
%% 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');
and the result looks like:
As you might be able to see, I incremented the speed of the machine by 5 for each timepoint. My question is how to calculate the order analysis for this system!? Thanks so much for any help!
This is more of a scientific question than a question about programming. Order analysis can be done using the fourier transform. All you need to do is looking for diagonal lines in the output, i.e. where the frequency of the noise is proportional to the rotation speed.
In your example image there is such an order from 2000 Hz at time(speed) 0 to 4000 Hz at time(speed) 150. Afterwards it seems to reflected downwards, probably an artifact of insufficient sampling.
So which order is it? For this you need to know the rotational speed of the motor which you do not seem to know. There is also another weaker order starting at 3000 Hz at time(speed) 0. With two or more visible orders you might be able to deduce the rotational speed of the motor (by requiring the frequencies to be whole number multiples of the original speed).
Anyway the code probably doesn't need to be changed except for a higher frequency resolution.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With