Main Content

rpmordermap

Order-RPM map for order analysis

Description

example

map= rpmordermap(x,fs,rpm)returns the order-RPM map matrix,map, that results from performing order analysis on the input vector,x.xis measured at a setrpmof rotational speeds expressed in revolutions per minute.fsis the measurement sample rate in Hz. Each column ofmapcontains root-mean-square (RMS) amplitude estimates of the orders present at eachrpmvalue.rpmordermapresamplesxto a constant samples-per-cycle rate and uses the short-time Fourier transform to analyze the spectral content of the resampled signal.

example

map= rpmordermap(x,fs,rpm,res)specifies the order resolution of the map in units of orders.

example

map= rpmordermap(___,Name,Value)specifies options usingName,Valuepairs 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.

example

rpmordermap(___)with no output arguments plots the order map as a function of rotational speed and time on an interactive figure.

Examples

collapse all

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)

Figure Order Map contains objects of type uimenu, uitoolbar, uiflowcontainer.

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(“转”)

Figure contains an axes object. The axes object contains an object of type line.

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 =“正常”; xlabel('Time (s)') ylabel('Order')

Figure contains an axes object. The axes object contains an object of type image.

Repeat the computation using a finer order resolution. Plot the map using the built-in functionality ofrpmordermap. The lower orders are resolved more clearly.

rpmordermap(vib,fs,rpm,0.005)

Figure Order Map contains objects of type uimenu, uitoolbar, uiflowcontainer.

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(“转”) zlabel('Amplitude')

Figure contains an axes object. The axes object contains an object of type patch.

Plot an interactive order-RPM map by callingrpmordermapwithout output arguments.

Load the filehelidata.mat, which contains simulated vibrational data from an accelerometer placed in the cockpit of a helicopter. The data is sampled at a rate of 500 Hz for 10 seconds. Remove the linear trend in the data. Callrpmordermapto generate an interactive plot of the order-RPM map. Specify an order resolution of 0.005 orders.

loadhelidata.matrpmordermap(detrend(vib),fs,rpm,0.005)

看到Algorithmsfor 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 theZoom Xbuttonin 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 theWaterfall Plotbuttonto display the order-RPM map as a waterfall plot. For improved visibility, rotate the plot clockwise using theRotate Leftbuttonthree times. Move the panner to the interval between 5 and 7 seconds.

Input Arguments

collapse all

Input signal, specified as a row or column vector.

Example:cos(pi/4*(0:159))+randn(1,160)specifies a sinusoid embedded in white Gaussian noise.

Sample rate, specified as a positive scalar expressed in Hz.

Rotational speeds, specified as a vector of positive values expressed in revolutions per minute.rpmmust have the same length asx.

  • If you have a tachometer pulse signal, usetachorpmto extractrpmdirectly.

  • If you do not have a tachometer pulse signal, userpmtrackto extractrpmfrom a vibration signal.

Example:100:10:3000specifies that a system rotates initially at 100 revolutions per minute and runs up to 3000 revolutions per minute in increments of 10.

Order resolution of the order-RPM map, specified as a positive scalar. Ifresis not specified, thenrpmordermapsets it to the sample rate of the constant-samples-per-cycle signal divided by 256. If the resampled input signal is not long enough, then the function uses the entire resampled signal length to compute a single order estimate.

Data Types:single|double

Name-Value Arguments

Specify optional pairs of arguments asName1=Value1,...,NameN=ValueN, whereNameis the argument name andValueis the corresponding value. Name-value arguments must appear after other arguments, but the order of the pairs does not matter.

Before R2021a, use commas to separate each name and value, and encloseNamein quotes.

Example:'Scale','dB','Window','hann'specifies that the order map estimates are to be scaled in decibels and determined using a Hann window.

Order-RPM map amplitudes, specified as the comma-separated pair consisting of'Amplitude'and one of'rms','peak', or'power'.

  • 'rms'— Returns the root-mean-square amplitude for each estimated order.

  • 'peak'— Returns the peak amplitude for each estimated order.

  • 'power'— Returns the power level for each estimated order.

Overlap percentage between adjoining segments, specified as the comma-separated pair consisting of'OverlapPercent'and a scalar from 0 to 100. A value of 0 means that adjoining segments do not overlap. A value of 100 means that adjoining segments are shifted by one sample. A larger overlap percentage produces a smoother map but increases the computation time. SeeAlgorithmsfor more information.

Data Types:double|single

Order-RPM map scaling, specified as the comma-separated pair consisting of'Scale'and either'linear'or'dB'.

  • 'linear'— Returns a linearly scaled map.

  • 'dB'— Returns a logarithmic map with values expressed in decibels.

Analysis window, specified as the comma-separated pair consisting of'Window'and one of these values:

  • 'flattopwin'specifies a flat top window. Seeflattopwinfor more details.

  • 'chebwin'specifies a Chebyshev window. Use a cell array to specify a sidelobe attenuation in decibels. The sidelobe attenuation must be greater than 45 dB. If not specified, it defaults to 100 dB. Seechebwinfor more details.

  • 'hamming'specifies a Hamming window. Seehammingfor more details.

  • 'hann'specifies a Hann window. Seehannfor more details.

  • 'kaiser'specifies a Kaiser window. Use a cell array to specify a shape parameter,β. The shape parameter must be a positive scalar. If not specified, it defaults to 0.5. Seekaiserfor more details.

  • 'rectwin'指定一个矩形窗口。看到rectwinfor more details.

Example:“窗口”、“chebwin”指定一个切比雪夫窗口与旁瓣衰减器uation of 100 dB.

Example:'Window',{'chebwin',60}指定一个切比雪夫窗口与旁瓣衰减器uation of 60 dB.

Example:'Window','kaiser'specifies a Kaiser window with a shape parameter of 0.5.

Example:'Window',{'kaiser',1}specifies a Kaiser window with a shape parameter of 1.

Data Types:char|string|cell

Output Arguments

collapse all

Order-RPM map, returned as a matrix.

Orders, returned as a vector.

Rotational speeds, returned as a vector.

Time instants, returned as a vector.

Order resolution, returned as a scalar.

Algorithms

Order analysis is the study of vibrations in rotating systems that result from the rotation itself. The frequencies of these vibrations are often proportional to the rotational speed. The constants of proportionality are theorders.

The rotational speed is usually measured independently and changes with time under most experimental conditions. Proper analysis of rotation-induced vibrations requires resampling and interpolating the measured signal to achieve a constant number of samples per cycle. Through this process, the signal components whose frequencies are constant multiples of the rotational speed transform into constant tones. The transformation reduces the smearing of spectral components that occurs when frequency changes rapidly with time.

Therpmordermapfunction performs these steps:

  1. Usescumtrapzto estimate the phase angle as the time integral of the rotational speed:

    ϕ ( t ) = 0 t RPM ( τ ) 60 d τ .

  2. Usesresampleto upsample and lowpass-filter the signal. This step enables the function to interpolate the signal at nonsampled time points without aliasing of the high-frequency components.rpmordermapupsamples the signal by a factor of 15.

  3. Usesinterp1to interpolate the upsampled signal linearly onto a uniform grid in the phase domain. The highest accessible order in a measurement is fixed by the sample rate and the highest rotational speed reached by the system:

    O max = f s / 2 max ( RPM 60 ) .

    To capture this highest order accurately, it is necessary to sample the signal at twiceOmaxat least. For better results,rpmordermapoversamples by an extra factor of 4. The resulting phase-domain sample rate,fp, is

    f p = 4 × 2 O max = 4 × 2 f s / 2 max ( RPM 60 ) .

    The default order resolution,r, is

    r = f p 256 = 4 × 60 256 2 × f s / 2 max ( RPM ) = 15 16 f s max ( RPM ) .

  4. Usesspectrogramto compute the short-time Fourier transform (STFT) of the interpolated signal. By default, the function divides the signal intoL-sample segments and windows each of them with a flat top window. There are

    N overlap = min ( p overlap 100 × L , L 1 )

    samples of overlap between adjoining segments, wherepoverlapis specified using the'OverlapPercent'name-value pair and defaults to 50%. The DFT length is set toL. The resolution is related to the sample rate and segment length through

    r = k f p L ,

    wherekis the equivalent noise bandwidth of the window, as implemented inenbw. Adjust the resolution to differentiate closely spaced orders. Smallerrvalues require larger segment lengths. If you need to attain a given resolution, make sure that your signal has enough samples.

The red dots in the RPM-vs.-time plot at the bottom of the interactiverpmordermapwindow correspond to the right edge of each windowed segment. The blue line in the plot is the RPM signal drawn as a function of time:

References

[1] Brandt, Anders.Noise and Vibration Analysis: Signal Analysis and Experimental Procedures. Chichester, UK: John Wiley & Sons, 2011.

Extended Capabilities

C/C++ Code Generation
Generate C and C++ code using MATLAB® Coder™.

版本历史

Introduced in R2015b