exponenta event banner

orderwaveform

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

Описание

пример

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

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

пример

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 × max (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] Фельдбауэр, Кристиан и Роберт Хёльдрих. «Реализация фильтра слежения Vold-Kalman - проблема наименьших квадратов». Материалы конференции COST G-6 по цифровым звуковым эффектам (DAFX-00). Верона, Италия, 7-9 декабря 2000 года.

[2] Вольд, Ховард и Ян Леуридан. «Отслеживание заказов с высоким разрешением с экстремальными скоростями с использованием фильтров отслеживания Калмана». Удар и вибрация. Том 2, 1995, стр. 507-515.

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

.
Представлен в R2016b