orderwaveform

Извлеките порядковые сигналы временной области из сигнала вибрации

Описание

пример

xrec = orderwaveform(x,fs,rpm,orderlist) возвращает формы волны временной области, соответствующие заданному набору порядков, присутствующих в входном сигнале, x. x измеряется в наборе rpm скорости вращения, выраженные в оборотах в минуту. fs - скорость выборки измерений в Гц. Векторная orderlist задает желаемые порядки, формы сигналов которых возвращаются в соответствующих столбцах xrec. Функция использует фильтр Vold-Kalman для расчетов.

xrec = orderwaveform(x,fs,rpm,orderlist,rpmrefidx) возвращает формы волны временной области с несколькими опорными сигналами RPM, которые сохраняются в столбцах rpm. rpmrefidx является вектором, который связывает каждый порядок в orderlist к сигналу об/мин.

пример

xrec = orderwaveform(x,fs,rpm,orderlist,rpmrefidx,Name,Value) задает дополнительные опции для процедуры Vold-Kalman, используя Name,Value пар.

Примеры

свернуть все

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

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

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

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

Сигнал состоит из четырех гармонично связанных щебета с порядками 1 , 1/2, √ 2 и 2. Амплитуды щебёнок составляют 1, 1/2, √ 2 и 2 соответственно. Чтобы сгенерировать щебет, используйте метод трапеций, чтобы выразить фазу как интеграл скорости вращения.

ord = [1 0.5 sqrt(2) 2];
amp = [1 0.5 sqrt(2) 2];

ph = 2*pi*cumtrapz(rpm/60)/fs;

x(1,:) = amp(1)*cos(ord(1)*ph);
x(2,:) = amp(2)*cos(ord(2)*ph);
x(3,:) = amp(3)*cos(ord(3)*ph);
x(4,:) = amp(4)*cos(ord(4)*ph);

xsum = sum(x);

Восстановите формы волны во временной области, которые составляют сигнал.

xrec = orderwaveform(xsum,fs,rpm,ord);

Визуализация результатов. Изменение масштаба временного интервала, возникающего после распада переходных процессов.

for kj = 1:4
    subplot(2,2,kj)
    plot(t,x(kj,:),t,xrec(:,kj))
    title(['Order = ' num2str(ord(kj))])
    xlim([2 3])
end

Figure contains 4 axes. Axes 1 with title Order = 1 contains 2 objects of type line. Axes 2 with title Order = 0.5 contains 2 objects of type line. Axes 3 with title Order = 1.4142 contains 2 objects of type line. Axes 4 with title Order = 2 contains 2 objects of type line.

Создайте имитированный сигнал вибрации, состоящий из двух порядков пересечения, соответствующих двум разным двигателям. Дискретизация сигнала производится на частоте 300 Гц в течение 3 секунд. Первый двигатель увеличивает скорость вращения с 10 до 100 оборотов в секунду (или, что эквивалентно, с 600 до 6000 об/мин) во время измерения. Второй двигатель увеличивает скорость вращения с 50 до 70 оборотов в секунду (или с 3000 до 4200 об/мин) в течение того же периода.

fs = 300;
nsamp = 3*fs;

rpm1 = linspace(10,100,nsamp)'*60;
rpm2 = linspace(50,70,nsamp)'*60;

Измеренный сигнал имеет порядок 1.2 и амплитуду 2√2 относительно первого двигателя. Что касается второго двигателя, то сигнал имеет порядок 0.8 и амплитуду 4√2.

x = [2 4]*sqrt(2).*cos(2*pi*cumtrapz([1.2*rpm1 0.8*rpm2]/60)/fs);

Заставьте первый двигатель возбуждать резонанс в середине частотной области значений.

y = [1+1./(1+linspace(-10,10,nsamp).^4)'/2 ones(nsamp,1)].*x;

x = sum(y,2);

Визуализируйте порядки с помощью rpmfreqmap.

rpmfreqmap(x,fs,rpm1)

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

Восстановите формы волны во временной области, которые составляют сигнал. Используйте алгоритм Vold-Kalman, чтобы развязать порядки пересечения.

xrec = orderwaveform(x,fs,[rpm1 rpm2],[1.2 0.8],[1 2],'Decouple',true);

Постройте график исходной и восстановленной формы волны.

for kj = 1:2
    figure(kj)
    subplot(2,1,1)
    plot((0:nsamp-1)/fs,y(:,kj))
    legend('Original')
    title(['Motor ' int2str(kj)])
    subplot(2,1,2)
    plot((0:nsamp-1)/fs,xrec(:,kj))
    legend('Reconstructed')
end

Figure contains 2 axes. Axes 1 with title Motor 2 contains an object of type line. This object represents Original. Axes 2 contains an object of type line. This object represents Reconstructed.

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

свернуть все

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

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

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

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

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

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

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

Список порядков, заданный как вектор. orderlist не должно иметь значений больше fs/ ( 2 × макс. (rpm/60)).

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

Индексы RPM столбца, заданные как вектор того же размера, что и orderlist.

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

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

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

Пример: 'Decouple',true,'FilterOrder',2 извлекает указанные формы волны одновременно и использует фильтр Vold-Kalman второго порядка.

Порядок фильтра Vold-Kalman, заданный как разделенная запятыми пара, состоящая из 'FilterOrder' и любой из них 1 или 2.

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

Приблизительная полуполоса пропускания мощности, заданная как разделенная разделенными запятой парами, состоящая из 'Bandwidth' и либо действительный скаляр, либо вектор действительных чисел с таким же количеством элементов, как orderlist. Меньшие значения 'Bandwidth' получение гладкого, узкополосного выхода. Однако этот выход может не точно отражать быстрые изменения амплитуды порядка.

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

Опция развязки режима, заданная как разделенная разделенными запятой парами, состоящая из 'Decouple' и логическое значение. Если для этой опции задано значение true, затем orderwaveform извлекает формы волны порядка одновременно, позволяя ей разделять близко расположенные или пересекающие порядки.

Типы данных: logical

Длина перекрывающихся сегментов, заданная как разделенная разделенными запятой парами, состоящая из 'SegmentLength' и целое число. Если вы задаете длину сегмента, то orderwaveform разделяет входной сигнал на сегменты. Затем он вычисляет восстановленные формы волны для каждого сегмента и объединяет результаты, чтобы получить выход. Если сегменты являются слишком короткими, функция может неправильно захватывать локализованные события, такие как порядки пересечения.

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

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

свернуть все

Восстановленные порядковых сигналов временной области, возвращенные как матрица с одной формой волны в каждом столбце.

Ссылки

[1] Feldbauer, Christian, and Robert Höldrich. «Реализация отслеживающего фильтра Vold-Kalman - задача методом наименьших квадратов». Материалы Конференции COST G-6 по цифровому аудио Эффектов (DAFX-00). Верона, Италия, 7-9 декабря 2000 года.

[2] Vold, Hovard, and Jan Leuridan. High Resolution Order Tracking at Extreme Скорости Нарастания Using Kalman Tracking Filters (неопр.) (недоступная ссылка). Шок и вибрация. Том 2, 1995, стр. 507-515.

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

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