rpmfreqmap
Частотно-оборотная карта для анализа порядков.
| Библиотека |
|
Синтаксис
Вызов функции
-
map,freq,rpm,time,res = rpmfreqmap(x,fs,rpm)— возвращает матрицу частотно-оборотной картыmap, полученную в результате частотного анализа входного вектораx, а также векторы с частотамиfreq, скоростями вращенияrpmи моментами времениtime, в которые вычисляется частотная картаmap. Функция также возвращает используемую полосу разрешенияres.Входной аргумент
xизмеряется при заданном значении частоты вращенияrpm, выраженном в об/мин. Аргументfs— частота дискретизации в Гц. Каждый столбец матрицыmapсодержит среднеквадратичные оценки амплитуды спектральных составляющих для каждого значенияrpm. Функцияrpmfreqmapиспользует кратковременное преобразование Фурье для анализа спектральных составляющих сигналаx.
-
rpmfreqmap(___,out=:plot)— строит карту частот как функцию скорости вращения и времени на интерактивном графике. График также известен как диаграмма Кэмпбелла.
Аргументы
Входные аргументы
#
x —
входной сигнал
вектор
Details
Входной сигнал, заданный как вектор-строка или вектор-столбец.
#
fs —
частота дискретизации
скаляр
Details
Частота дискретизации, заданная как положительный скаляр, выраженный в Гц.
#
rpm —
скорость вращения
вектор
Details
Скорость вращения, заданная как вектор положительных значений, выраженных в об/мин. Длина аргумента rpm должна совпадать с длиной аргумента x.
-
Если есть импульсный сигнал тахометра, используйте функцию
tachorpmдля непосредственного извлеченияrpm. -
Если нет импульсного сигнала тахометра, используйте функцию
rpmtrackдля извлеченияrpmиз вибрационного сигнала.
#
res —
полоса разрешения
fs/128 (по умолчанию) | скаляр
Details
Полоса разрешения частотно-оборотной карты, заданная как положительный скаляр. Если аргумент res не задан, то функция rpmfreqmap устанавливает его значение равным частоте дискретизации, деленной на 128. Если длительность сигнала недостаточна, функция использует всю длину сигнала для вычисления одной оценки частоты.
| Типы данных |
|
Входные аргументы «имя-значение»
Укажите необязательные пары аргументов в виде 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.
| Типы данных |
|
#
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.
| Типы данных |
|
#
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")