rpmfreqmap

Карта частота-об/мин для анализа порядка

Описание

пример

map = rpmfreqmap(x,fs,rpm) возвращает матрицу карты частота-об/мин, map, что является результатом выполнения частотного анализа вектора входа, x. x измеряется в наборе rpm скорости вращения, выраженные в оборотах в минуту. fs - частота дискретизации в Гц. Каждый столбец map содержит среднеквадратичные (RMS) оценки амплитуды спектрального содержимого, присутствующего при каждом значении rpm. rpmfreqmap использует кратковременное преобразование Фурье, чтобы проанализировать спектральное содержимое x.

пример

map = rpmfreqmap(x,fs,rpm,res) задает полосу пропускания разрешения карты в Гц.

пример

map = rpmfreqmap(___,Name,Value) задает опции используя Name,Value пары в дополнение к входным параметрам в предыдущих синтаксисах.

[map,freq,rpm,time,res] = rpmfreqmap(___) возвращает векторы с частотами, скоростью вращения и временными моментами, в которых вычисляется карта частот. Это также возвращает используемую полосу пропускания разрешения.

пример

rpmfreqmap(___) без выходных аргументов строит график частотной карты как функции скорости вращения и времени на интерактивном рисунке. График также известен как схема Кэмпбелла.

Примеры

свернуть все

Создайте имитированный сигнал, дискретизированный на частоте 600 Гц в течение 5 секунд. Система, которая тестируется, увеличивает скорость вращения с 10 до 40 оборотов в секунду в течение периода наблюдения.

Сгенерируйте показания тахометра.

fs = 600;
t1 = 5;
t = 0:1/fs:t1;

f0 = 10;
f1 = 40;
rpm = 60*linspace(f0,f1,length(t));

Сигнал состоит из четырех гармонически связанных щебета с порядками 1 , 0.5 , 4 и 6. Щебет порядка 4 имеет удвоенную амплитуду остальных. Чтобы сгенерировать щебет, используйте метод трапеций, чтобы выразить фазу как интеграл скорости вращения.

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);

Визуализируйте карту частота-об/мин сигнала.

rpmfreqmap(x,fs,rpm)

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

Анализ моделируемых данных с акселерометра, размещенного в кабине вертолета.

Загрузите данные вертолета. Вибрационные измерения, vib, отбираются со скоростью 500 Гц в течение 10 секунд. Проверка данных показывает, что она имеет линейный тренд. Удалите тренд, чтобы предотвратить его ухудшение качества оценки частоты.

load('helidata.mat')

vib = detrend(vib);

Постройте график нелинейного профиля скорости вращения. Ротор поднимается до тех пор, пока не достигнет максимальной скорости вращения около 27 600 оборотов в минуту, а затем прибегает вниз.

plot(t,rpm)
xlabel('Time (s)')
ylabel('RPM')

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

Вычислите карту частота-об/мин. Задайте пропускную способность разрешения 2,5 Гц.

[map,freq,rpmOut,time] = rpmfreqmap(vib,fs,rpm,2.5);

Визуализируйте карту.

imagesc(time,freq,map)
ax = gca;
ax.YDir = 'normal';
xlabel('Time (s)')
ylabel('Frequency (Hz)')

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

Повторите расчет с помощью более мелкой полосы разрешения. Постройте график карты с помощью встроенной функциональности rpmfreqmap. Усиление разрешения частоты происходит за счет временного разрешения.

rpmfreqmap(vib,fs,rpm,1.5);

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

Сгенерируйте сигнал, который состоит из двух линейных щебета и квадратичного щебета, все дискретизированные на частоте 600 Гц в течение 15 секунд. Система, которая производит сигнал, увеличивает его скорость вращения с 10 до 40 оборотов в секунду в течение периода проверки.

Сгенерируйте показания тахометра.

fs = 600;
t1 = 15;
t = 0:1/fs:t1;

f0 = 10;
f1 = 40;
rpm = 60*linspace(f0,f1,length(t));

Линейные щебеты имеют порядки 1 и 2.5. Компонент с порядком 1 имеет половину амплитуды другого. Квадратичный щебет начинается с порядка 6 и возвращается к этому порядку в конце измерения. Его амплитуда составляет 0,8. Создайте сигнал с помощью этой информации.

o1 = 1;
o2 = 2.5;
o6 = 6;

x = 0.5*chirp(t,o1*f0,t1,o1*f1)+chirp(t,o2*f0,t1,o2*f1) + ...
    0.8*chirp(t,o6*f0,t1,o6*f1,'quadratic');

Вычислите карту частота-об/мин сигнала. Используйте пиковую амплитуду в каждой камере измерения. Задайте разрешение 6 Гц. Отобразите данные в плоском верхнем окне.

[map,fr,rp] = rpmfreqmap(x,fs,rpm,6, ...
    'Amplitude','peak','Window','flattopwin');

Нарисуйте карту частота-об/мин как график водопада.

[FR,RP] = meshgrid(fr,rp);
waterfall(FR,RP,map')

view(-6,60)
xlabel('Frequency (Hz)')
ylabel('RPM')
zlabel('Amplitude')

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

Постройте интерактивную карту частота-об/мин путем вызова rpmfreqmap без выходных аргументов.

Загрузите файл, содержащий имитированные вибрационные данные с акселерометра, размещенного в кабине вертолета. Данные отбираются со скоростью 500 Гц в течение 10 секунд. Удалите линейный тренд в данных. Звонить rpmfreqmap чтобы сгенерировать интерактивный график карты частота-об/мин. Задайте разрешение частоты 2 Гц.

load helidata.mat
rpmfreqmap(detrend(vib),fs,rpm,2)

Переместите курсоры перекрестия на рисунке для определения частоты вращения и амплитуды RMS на частоте 25 Гц через 5 секунд.

Нажмите кнопку Zoom X на панели инструментов, чтобы изменить масштаб временной области между 2 и 4 секундами. На нижнем графике появляется панорама.

Нажмите кнопку Waterfall Plot на панели инструментов, чтобы отобразить карту частота-об/мин как график водопада. Для улучшения видимости поверните график по часовой стрелке с помощью кнопки Rotate Left три раза. Переместите панораму на интервал между 4 и 6 секундами.

Входные параметры

свернуть все

Входной сигнал, заданный как строка или вектор-столбец.

Пример: cos(pi/4*(0:159))+randn(1,160) задает синусоиду, встроенную в белый Гауссов шум.

Частота дискретизации, заданная как положительная скалярная величина, выраженная в Гц.

Скорости вращения, заданные как вектор положительных значений, выраженных в оборотах в минуту. rpm должны иметь ту же длину, что и x.

  • Если у вас есть импульсный сигнал тахометра, используйте tachorpm для извлечения rpm непосредственно.

  • Если у вас нет импульсного сигнала тахометра, используйте rpmtrack для извлечения rpm от сигнала вибрации.

Пример: 100:10:3000 указывает, что система первоначально вращается со скоростью 100 оборотов в минуту и вращается до 3000 оборотов в минуту с шагами 10.

Пропускная способность карты частота-об/мин, заданная как положительная скалярная величина. Если res не задан, тогда rpmfreqmap устанавливает его на частоту дискретизации, разделенную на 128. Если сигнал недостаточно длинный, функция использует всю длину сигнала, чтобы вычислить одну оценку частоты.

Типы данных: single | double

Аргументы в виде пар имя-значение

Задайте необязательные разделенные разделенными запятой парами Name,Value аргументы. Name - имя аргумента и Value - соответствующее значение. Name должны находиться внутри кавычек. Можно задать несколько аргументов в виде пар имен и значений в любом порядке Name1,Value1,...,NameN,ValueN.

Пример: 'Scale','dB','Window','hann' определяет, что оценки карты частот должны быть масштабированы в децибелах и определены с помощью окна Ханна.

Амплитуды карты частота-об/мин, заданные как разделенная разделенными запятой парами, состоящая из 'Amplitude' и один из 'rms', 'peak', или 'power'.

  • 'rms' - Возвращает среднеквадратичную амплитуду для каждой оцененной частоты.

  • 'peak' - возвращает пиковую амплитуду для каждой оцененной частоты.

  • 'power' - Возвращает уровень степени для каждой оцененной частоты.

Процент перекрытия между смежными сегментами, заданный как разделенная разделенными запятой парами, состоящая из 'OverlapPercent' и скаляром от 0 до 100. Значение 0 означает, что смежные сегменты не перекрываются. Значение 100 означает, что смежные сегменты сдвинуты на одну выборку. Больший процент перекрытия создает более гладкую карту, но увеличивает время расчета. Посмотрите rpmordermap для получения дополнительной информации.

Типы данных: double | single

Масштабирование карты частота-об/мин, заданное как разделенная разделенными запятой парами, состоящая из 'Scale' и любой из них 'linear' или 'dB'.

  • 'linear' - Возвращает линейно масштабированную карту.

  • 'dB' - Возвращает логарифмическую карту со значениями, выраженными в децибелах.

Окно анализа, заданное как разделенная разделенными запятой парами, состоящая из 'Window' и одно из следующих значений:

  • 'hann' задает окно Hann. Посмотрите hann для получения дополнительной информации.

  • 'chebwin' задает окно Чебышева. Используйте массив ячеек, чтобы задать ослабление бокового elobe в децибелах. Ослабление бокового колеса должно быть больше 45 дБ. Если этот параметр не задан, значение по умолчанию равно 100 дБ. Посмотрите chebwin для получения дополнительной информации.

  • 'flattopwin' задает плоское верхнее окно. Посмотрите flattopwin для получения дополнительной информации.

  • 'hamming' задает окно Хэмминга. Посмотрите hamming для получения дополнительной информации.

  • 'kaiser' задает окно Кайзера. Используйте массив ячеек, чтобы задать параметр формы, β. Параметр shape должен быть положительной скалярной величиной. Если этот параметр не задан, значение по умолчанию равно 0,5. Посмотрите kaiser для получения дополнительной информации.

  • 'rectwin' задает прямоугольное окно. Посмотрите rectwin для получения дополнительной информации.

Пример: 'Window','chebwin' задает окно Чебышева с ослаблением боковой оси 100 дБ.

Пример: 'Window',{'chebwin',60} задает окно Чебышева с ослаблением бокового колеса на 60 дБ.

Пример: 'Window','kaiser' задает окно Кайзера с параметром формы 0,5.

Пример: 'Window',{'kaiser',1} задает окно Кайзера с параметром формы 1.

Типы данных: char | string | cell

Выходные аргументы

свернуть все

Карта частота-об/мин, возвращенная как матрица.

Частоты, возвращенные как вектор.

Скорости вращения, возвращенные как вектор.

Момент времени, возвращенный как вектор.

Шумовая полоса разрешения, возвращенная как скаляр.

Ссылки

[1] Брандт, Андерс. Анализ шума и вибрации: анализ сигналов и экспериментальные процедуры. Chichester, UK: John Wiley & Sons, 2011.

Расширенные возможности

Генерация кода C/C + +
Сгенерируйте код C и C++ с помощью Coder™ MATLAB ®

.
Введенный в R2015b