rpmordermap() - Signal Processing
examplemap = rpmordermap(x,fs,rpm) returns
the order-RPM map matrix, map, that results from
performing order analysis on the input vector, x. x is
measured at a set rpm of rotational speeds expressed
in revolutions per minute. fs is the measurement
sample rate in Hz. Each column of map contains
root-mean-square (RMS) amplitude estimates of the orders present at
each rpm value. rpmordermap resamples x to
a constant samples-per-cycle rate and uses the short-time Fourier
transform to analyze the spectral content of the resampled signal.
examplemap = rpmordermap(x,fs,rpm,res) specifies
the order resolution of the map in units of orders.
examplemap = rpmordermap(___,Name,Value) specifies
options using Name,Value pairs in addition to
the input arguments in previous syntaxes.
[map,order,rpm,time,res]
= rpmordermap(___) returns vectors with the
orders, rotational speeds, and time instants at which the order map
is computed. It also returns the order resolution used.
examplerpmordermap(___) with no output
arguments plots the order map as a function of rotational speed and
time on an interactive figure.
Syntax
map = rpmordermap(x,fs,rpm) examplemap = rpmordermap(x,fs,rpm,res) examplemap = rpmordermap(___,Name,Value) example[map,order,rpm,time,res]
= rpmordermap(___)rpmordermap(___) example
Example
Order-RPM Map of Chirp with 4 OrdersOpen This Example
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.rpmordermap(x,fs,rpm)
Order-RPM Map of Helicopter Vibration DataOpen This Example
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. Inspection of the data reveals that it 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 order-RPM map. Specify an order resolution of 0.015.[map,order,rpmOut,time] = rpmordermap(vib,fs,rpm,0.015);
Visualize the map.imagesc(time,order,map)
ax = gca;
ax.YDir = 'normal';
xlabel('Time (s)')
ylabel('Order')
Repeat the computation using a finer order resolution. Plot the map using the built-in functionality of rpmordermap. The lower orders are resolved more clearly.rpmordermap(vib,fs,rpm,0.005);
Waterfall Plot of Order-RPM MapOpen This Example
Generate a signal that consists of two linear chirps and a quadratic chirp, all sampled at 600 Hz for 5 seconds. The system that produces the signal increases its rotational speed from 10 to 40 revolutions per second during the testing 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 linear chirps have orders 1 and 2.5. The component with order 1 has twice the amplitude of the other. The quadratic chirp starts at order 6 and returns to this order at the end of the measurement. Its amplitude is 0.8. Create the signal using this information.o1 = 1;
o2 = 2.5;
o6 = 6;
x = 2*chirp(t,o1*f0,t1,o1*f1)+chirp(t,o2*f0,t1,o2*f1) + ...
0.8*chirp(t,o6*f0,t1,o6*f1,'quadratic');
Compute the order-RPM map of the signal. Use the peak amplitude at each measurement cell. Specify a resolution of 0.25 orders. Window the data with a Chebyshev window whose sidelobe attenuation is 80 dB.[map,or,rp] = rpmordermap(x,fs,rpm,0.25, ...
'Amplitude','peak','Window',{'chebwin',80});
Draw the order-RPM map as a waterfall plot.[OR,RP] = meshgrid(or,rp);
waterfall(OR,RP,map')
view(-15,45)
xlabel('Order')
ylabel('RPM')
zlabel('Amplitude')
Interactive Order-RPM Map
Plot an interactive order-RPM map by calling rpmordermap without
output arguments.
Load the file 'helidata.mat', which
contains simulated vibrational data from an accelerometer placed in
the cockpit of a helicopter. The data are sampled at a rate of 500
Hz for 10 seconds. Remove the linear trend in the data. Call rpmordermap to
generate an interactive plot of the order-RPM map. Specify an order
resolution of 0.005 orders.load('helidata.mat')
rpmordermap(detrend(vib),fs,rpm,0.005)
See Algorithms for a more detailed
description of the RPM-vs.-time plot at the bottom of the figure.Move the crosshair cursors in the figure to determine
the RPM and the RMS amplitude at order 0.053 after 6 seconds.
Click the Zoom X button
in the toolbar to zoom
into the time region between 2 and 4 seconds. The
gray rectangle in the RPM-vs.-time plot shows the region of interest.
You can slide this region to pan through time.
Click the Waterfall Plot button
to display the order-RPM
map as a waterfall plot. For improved visibility, rotate the plot
clockwise using the Rotate Left button
three times. Move the
panner to the interval between 5 and 7 seconds.
Output / Return Value
Limitations
Alternatives / See Also
Reference