orderwaveform

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

Описание

пример

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

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

пример

xrec = orderwaveform(x,fs,rpm,orderlist,rpmrefidx,Name,Value) задает дальнейшие опции для процедуры Волд-Кальмана с помощью Name,Value пары.

Примеры

свернуть все

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

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

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

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

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)

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

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

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

свернуть все

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Типы данных: логический

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

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

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

свернуть все

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

Ссылки

[1] Feldbauer, Кристиан и Роберт Хелдрич. “Реализация Волд-Кальмана, отслеживающего фильтр — проблема наименьших квадратов”. Продолжения COST G-6 конференция по эффектам цифрового аудио (DAFX-00). Верона, Италия, 7-9 декабря 2000.

[2] Vold, Ховард и Ян Леуридэн. “Отслеживание заказов Высокого разрешения на Экстремальных Скоростях нарастания Используя Кальмана Трэкинга Филтерса”. Шок и Вибрация. Издание 2, 1995, стр 507–515.

Введенный в R2017b