Average spectrum versus order for vibration signal
spec = orderspectrum(x,fs,rpm)
[spec,order] = orderspectrum(x,fs,rpm)
[spec,order] = orderspectrum(map,order)
an average order-magnitude spectrum vector starting from an order-RPM
map and a vector of orders. Use
be linearly scaled. The returned amplitudes are the same as in
The returned spectrum is scaled linearly.
orderspectrum(___) with no
output arguments plots the RMS amplitude of the order spectrum, scaled
linearly, on the current figure.
Create a simulated signal sampled at 600 Hz for 5 seconds. The system that is being tested increases its rotational speed from 10 to 40 revolutions per second during the observation period.
Generate the tachometer readings.
fs = 600; t1 = 5; t = 0:1/fs:t1; f0 = 10; f1 = 40; rpm = 60*linspace(f0,f1,length(t));
The signal consists of four harmonically related chirps with orders 1, 0.5, 4, and 6. The order-4 chirp has twice the amplitude of the others. To generate the chirps, use the trapezoidal rule to express the phase as the integral of the rotational speed.
o1 = 1; o2 = 0.5; o3 = 4; o4 = 6; ph = 2*pi*cumtrapz(rpm/60)/fs; x = [1 1 2 1]*cos([o1 o2 o3 o4]'*ph);
Visualize the order-RPM map of the signal.
Visualize the average order spectrum of the signal. The peaks of the spectrum correspond to the ridges seen in the order-RPM map.
Analyze simulated data from an accelerometer placed in the cockpit of a helicopter.
Load the helicopter data. The vibrational measurements,
vib, are sampled at a rate of 500 Hz for 10 seconds. The data has a linear trend. Remove the trend to prevent it from degrading the quality of the order estimation.
load('helidata.mat') vib = detrend(vib);
Plot the nonlinear RPM profile. The rotor runs up until it reaches a maximum rotational speed of about 27,600 revolutions per minute and then coasts down.
plot(t,rpm) xlabel('Time (s)') ylabel('RPM')
Compute the average order spectrum of the signal. Use the default order resolution.
rpmordermap to repeat the computation with a finer order resolution. The lower orders are resolved more clearly.
[map,order] = rpmordermap(vib,fs,rpm,0.005); orderspectrum(map,order)
Compute the power level for each estimated order. Display the result in decibels.
[map,order] = rpmordermap(vib,fs,rpm,0.005,'Amplitude','power'); spec = orderspectrum(map,order); plot(order,pow2db(spec)) xlabel('Order Number') ylabel('Order Power Amplitude (dB)') grid on
map— Order-RPM map
Order-RPM map, specified as a matrix. Use
rpmordermap to compute order-RPM maps.
spec— Average order-magnitude spectrum
order— Output orders
Output orders, returned as a real vector.
 Brandt, Anders. Noise and Vibration Analysis: Signal Analysis and Experimental Procedures. Chichester, UK: John Wiley & Sons, 2011.
 Vold, Håvard, and Jan Leuridan. “High Resolution Order Tracking at Extreme Slew Rates Using Kalman Tracking Filters.” Shock and Vibration. Vol. 2, 1995, pp. 507–515.