Документация Engee

rpmfreqmap

Частотно-оборотная карта для анализа порядков.

Библиотека

EngeeDSP

Синтаксис

Вызов функции

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

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

  • map,freq,rpm,time,res = rpmfreqmap(___,Name,Value) — задает дополнительные параметры с помощью аргументов типа «имя-значение» для любого из предыдущих вариантов синтаксиса.

  • rpmfreqmap(___,out=:plot) — строит карту частот как функцию скорости вращения и времени на интерактивном графике. График также известен как диаграмма Кэмпбелла.

Аргументы

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

# x — входной сигнал
вектор

Details

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

# fs — частота дискретизации
скаляр

Details

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

# rpm — скорость вращения
вектор

Details

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

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

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

# res — полоса разрешения
fs/128 (по умолчанию) | скаляр

Details

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

Типы данных

Float32, Float64

Входные аргументы «имя-значение»

Укажите необязательные пары аргументов в виде Name,Value, где Name — имя аргумента, а Value — соответствующее значение. Аргументы типа «имя-значение» должны располагаться после других аргументов, но порядок пар не имеет значения. Можно указать несколько пар «имя-значение».

Используйте запятые для разделения имени и значения, а Name заключите в кавычки.

Пример: rpmfreqmap(x, fs, rpm, "Scale", "dB", "Window", "hann") задает шкалу оценок частотной карты в дБ и использует окно Ханна.

# Amplitude — тип амплитуды
"rms" (по умолчанию) | "peak" | "power"

Details

Тип амплитуды частотно-оборотной карты, заданный одним из следующих значений:

  • "rms" — возвращает среднеквадратичную амплитуду для каждой оцениваемой частоты;

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

  • "power" — возвращает уровень мощности для каждой оцениваемой частоты.

# OverlapPercent — процент перекрытия между смежными сегментами
50 (по умолчанию) | скаляр

Details

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

Типы данных

Float32, Float64

# Scale — шкала частотно-оборотной карты
"linear" (по умолчанию) | "dB"

Details

Шкала частотно-оборотной карты, заданная одним из следующих значений:

  • "linear" — возвращает карту с линейной шкалой;

  • "dB" — возвращает карту с логарифмической шкалой, значения которой выражены в дБ.

# Window — окно анализа
"hann" (по умолчанию) | "chebwin" | "flattopwin" | "hamming" | "kaiser" | "rectwin"

Details

Окно анализа, заданное одним из следующих значений:

  • "hann" — задает окно Ханна. Для получения более подробной информации см. описание функции hann.

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

    Пример: rpmfreqmap(x, fs, rpm, "Amplitude", "peak", "Window", ("chebwin", 80)) задает пиковую амплитуду и использует окно Чебышева с ослаблением боковых лепестков 80 дБ.

  • "flattopwin" — задает окно с плоской вершиной. Для получения более подробной информации см. описание функции flattopwin.

  • "hamming" — задает окно Хэмминга. Для получения более подробной информации см. описание функции hamming.

  • "kaiser" — задает окно Кайзера. Используйте кортеж для указания формфактора . Формфактор должен быть положительным скаляром. Если значение параметра формы не задано, по умолчанию используется 0.5. Для получения более подробной информации см. описание функции kaiser.

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

Типы данных

Symbol, String

# out — тип выходных данных
:data (по умолчанию) | :plot

Details

Тип выходных данных:

  • :data — функция возвращает данные;

  • :plot — функция возвращает график.

Для этого аргумента имя и значение разделяются знаком равенства (=).

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

# map — частотно-оборотная карта
матрица

Details

Карта зависимости частоты от скорости вращения, возвращаемая в виде матрицы.

# freq — частоты
вектор

Details

Частоты, возвращаемые в виде вектора.

# rpm — скорость вращения
вектор

Details

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

# time — моменты времени
вектор

Details

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

# res — полоса разрешения
скаляр

Details

Полоса разрешения, возвращаемая в виде скаляра.

Примеры

Поверхностная диаграмма частотно-оборотной карты

Details

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

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

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

f0 = 10
f1 = 40
rpm = collect(60 * range(f0, f1, length=length(t)))

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

o1 = 1
o2 = 2.5
o6 = 6

import EngeeDSP.Functions: chirp

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 Гц. Обработаем данные с помощью окна с плоской вершиной.

import EngeeDSP.Functions: rpmfreqmap

map, fr, rp = rpmfreqmap(x, fs, rpm, 6, "Amplitude", "peak", "Window", "flattopwin")

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

FR = repeat(fr', length(rp), 1)
RP = repeat(rp, 1, length(fr))

surface(FR, RP, map';
        camera = (-6, 60),
        xlabel = "Frequency (Hz)",
        ylabel = "RPM",
        zlabel = "Amplitude")

rpmfreqmap

Литература

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