exponenta event banner

cwt

Непрерывное 1-D вейвлет-преобразование

Посмотрите cwt для получения информации о старой версии cwt. Более старая версия больше не рекомендуется.

Описание

пример

wt = cwt(x) возвращает непрерывное вейвлет-преобразование (CWT) x. Вход, x, является вектором с реальными или комплексными значениями или одной переменной, регулярно дискретизируемым расписанием, и должен иметь по крайней мере четыре выборки. CWT получают, используя аналитический вейвлет Морса с параметром симметрии (гамма), равным 3, и произведением временной полосы, равным 60. cwt использует 10 голосов на октаву. Минимальная и максимальная шкалы определяются автоматически на основе разброса энергии вейвлета по частоте и времени. Если x вещественно-значимый, wt - матрица 2-D, где каждая строка соответствует одной шкале. Размер столбца wt равна длине x. Если x является комплекснозначным, wt является 3-D матрицей, где первая страница является CWT для положительных шкал (аналитическая часть или компонент против часовой стрелки), а вторая страница является CWT для отрицательных шкал (антианалитическая часть или компонент по часовой стрелке).

cwt функция использует нормализацию L1. При L1 нормализации, если вы имеете равные амплитудные колебательные компоненты в данных в различных масштабах, они будут иметь одинаковую величину в CWT. Использование L1 нормализации показывает более точное представление сигнала. См. раздел L1 Норма для CWT и непрерывного вейвлет-преобразования двух сложных экспоненциалов.

wt = cwt(x,wname) использует аналитический вейвлет, указанный wname для вычисления CWT. Допустимые параметры для wname являются 'morse', 'amor', и 'bump', которые определяют Морс, Морлет (Габор) и импульс удара соответственно. Если не указать wname, wname по умолчанию: 'morse'.

пример

[wt,f] = cwt(___,fs) определяет частоту выборки, fs, в Гц как положительный скаляр. cwt использование fs чтобы определить преобразования масштаба в частоту и вернуть частоты f в Гц. Если частота выборки не указана, cwt прибыль f в циклах на образец. Если вход x является сложным, преобразования масштаба в частоту применяются к обеим страницам wt. Если x является расписанием, вы не можете указать fs. fs определяется из RowTimes расписания.

[wt,period] = cwt(___,ts) определяет период выборки, ts, как положительный duration скаляр. duration может быть в годах, днях, часах, минутах или секундах. cwt использование ts для вычисления преобразования масштаба в период и возврата периодов времени в period. Массив длительностей в period имеет то же свойство формата, что и ts. Если вход x является сложным, преобразования масштаба в период применяются к обеим страницам wt. Если x является расписанием, вы не можете указать ts. ts определяется из RowTimes расписания при установке 'PeriodLimits' пара имя-значение.

пример

[wt,f,coi] = cwt(___,fs) возвращает конус влияния, coi, который показывает, где краевые эффекты CWT становятся значительными. Конус воздействия для CWT находится в Гц. Если вход x является сложным, конус влияния применяется к обеим страницам wt.

[wt,period,coi] = cwt(___,ts) возвращает конус влияния, coi, который показывает, где краевые эффекты CWT становятся значительными. Конус влияния для CWT - в периодах. Если вход x является сложным, конус влияния применяется к обеим страницам wt.

[___] = cwt(___,Name,Value) возвращает CWT с дополнительными опциями, указанными одним или несколькими Name,Value аргументы пары.

[___,coi,fb] = cwt(___) возвращает банк фильтров, используемый в CWT. Посмотрите cwtfilterbank.

[___,fb,scalingcfs] = cwt(___) возвращает коэффициенты масштабирования, если анализирующий вейвлет 'morse' или 'amor'. Коэффициенты масштабирования не поддерживаются для ударного импульса.

пример

cwt(___) без выходных аргументов отображает скалограмму CWT. Скалограмма - это абсолютное значение CWT, отображаемое как функция времени и частоты. Строят график частоты в логарифмическом масштабе. На графике также показан конус влияния, показывающий, где краевые эффекты становятся значительными. Серые области за пределами пунктирной белой линии отделяют области, где краевые эффекты значительны. Если входной сигнал является комплекснозначным, то положительная (против часовой стрелки) и отрицательная (по часовой стрелке) составляющие строятся в отдельных скалограммах.

Если частота выборки или период выборки не указаны, то эти частоты отображаются в циклах на выборку. Если указана частота дискретизации, частоты будут в Гц. Если указан период выборки, скалограмма отображается как функция времени и периодов. Если входной сигнал является графиком, скалограмма строится как функция времени и частоты в герцах и использует RowTimes в качестве основы для оси времени.

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

Примечание

Перед построением графика, cwt очищает (clf) текущий показатель. Для построения графика скалограммы на вложенном графике используется функция печати. См. раздел Печать скалограммы CWT в подграфе.

Примеры

свернуть все

Получение непрерывного вейвлет-преобразования речевой выборки с использованием значений по умолчанию.

load mtlb;
w = cwt(mtlb);

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

load mtlb
cwt(mtlb,'bump',Fs)

Figure contains an axes. The axes with title Magnitude Scalogram contains 3 objects of type image, line, area.

Сравните результат, полученный из CWT, используя вейвлет Морса по умолчанию.

cwt(mtlb,Fs)

Figure contains an axes. The axes with title Magnitude Scalogram contains 3 objects of type image, line, area.

Получить CWT данных землетрясения в Кобе. Данные являются сейсмографическими (вертикальное ускорение, нм/кв.сек) измерениями, зарегистрированными в Университете Тасмании, Хобарт, Австралия, 16 января 1995 начиная с 20:56:51 (GMT) и продолжающимися в течение 51 минут. Частота дискретизации составляет 1 Гц.

load kobe

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

plot((1:numel(kobe))./60,kobe)
xlabel('mins')
ylabel('nm/s^2')
grid on
title('Kobe Earthquake Data')

Figure contains an axes. The axes with title Kobe Earthquake Data contains an object of type line.

Получить CWT, частоты и конус влияния.

[wt,f,coi] = cwt(kobe,1);

Постройте график данных, включая конус влияния.

cwt(kobe,1)

Figure contains an axes. The axes with title Magnitude Scalogram contains 3 objects of type image, line, area.

Получение CWT, периодов времени и конуса воздействия путем указания периода выборки вместо частоты выборки.

[wt,periods,coi] = cwt(kobe,minutes(1/60));

Просмотрите те же данные, указав входной период выборки вместо частоты.

cwt(kobe,minutes(1/60))

Figure contains an axes. The axes with title Magnitude Scalogram contains 3 objects of type image, line, area.

Создайте два комплексных экспоненты, различных амплитуд, с частотами 32 и 64 Гц. Данные дискретизируют при частоте 1000 Гц. Два сложных экспоненты имеют несвязанную поддержку во времени.

Fs = 1e3;
t = 0:1/Fs:1;
z = exp(1i*2*pi*32*t).*(t>=0.1 & t<0.3)+2*exp(-1i*2*pi*64*t).*(t>0.7);

Добавьте сложный белый гауссов шум со стандартным отклонением 0,05.

wgnNoise = 0.05/sqrt(2)*randn(size(t))+1i*0.05/sqrt(2)*randn(size(t));
z = z+wgnNoise;

Получение и построение графика cwt с использованием импульса Морса.

cwt(z,Fs)

Figure contains 2 axes. Axes 1 with title Magnitude Scalogram Positive Component (Counterclockwise Rotation) contains 3 objects of type image, line, area. Axes 2 with title Negative Component (Clockwise Rotation) contains 3 objects of type image, line, area.

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

Этот пример показывает, что амплитуды колебательных составляющих в сигнале согласуются с амплитудами соответствующих вейвлет-коэффициентов.

Создайте сигнал, состоящий из двух синусоид с непересекающейся поддержкой во времени. Одна синусоида имеет частоту 32 Гц и амплитуду, равную 1. Другая синусоида имеет частоту 64 Гц и амплитуду, равную 2. Сигнал дискретизируется в течение одной секунды при частоте 1000 Гц. Постройте график сигнала.

frq1 = 32;
amp1 = 1;
frq2 = 64;
amp2 = 2;

Fs = 1e3;
t = 0:1/Fs:1;
x = amp1*sin(2*pi*frq1*t).*(t>=0.1 & t<0.3)+amp2*sin(2*pi*frq2*t).*(t>0.6 & t<0.9);

plot(t,x)
grid on
xlabel('Time (sec)')
ylabel('Amplitude')
title('Signal')

Figure contains an axes. The axes with title Signal contains an object of type line.

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

fb = cwtfilterbank('SignalLength',numel(x),'SamplingFrequency',Fs,...
    'FrequencyLimits',[20 100]);
figure
freqz(fb)

Figure contains an axes. The axes with title CWT Filter Bank contains 24 objects of type line.

Использовать cwt и банк фильтров для построения графика скалограммы сигнала.

figure
cwt(x,'FilterBank',fb)

Figure contains an axes. The axes with title Magnitude Scalogram contains 3 objects of type image, line, area.

Выполните этот сценарий и используйте курсор данных для подтверждения того, что амплитуды вейвлет-коэффициентов по существу равны амплитудам синусоидальных составляющих.

В этом примере показано, как использование набора фильтров CWT повышает вычислительную эффективность при приеме CWT нескольких временных рядов.

Загрузить сейсмографические данные, зарегистрированные во время землетрясения в Кобе в 1995 году. Данные являются сейсмографическими (вертикальное ускорение, нм/кв.сек) измерениями, зарегистрированными в Университете Тасмании, Хобарт, Австралия, 16 января 1995 начиная с 20:56:51 (GMT) и продолжающимися в течение 51 минут 1 секундными интервалами. Создайте банк фильтров CWT, который можно применить к данным.

load kobe
fb = cwtfilterbank('SignalLength',numel(kobe),'SamplingFrequency',1);

Используйте cwt и 250 раз возьмем CWT данных. Отображение затраченного времени.

num = 250;
tic;
for k=1:num
    cfs = cwt(kobe);
end
toc
Elapsed time is 6.551628 seconds.

Теперь используйте wt объектная функция банка фильтров для получения CWT данных. Подтвердите, что использование банка фильтров выполняется быстрее.

tic;
for k=1:num
    cfs = wt(fb,kobe);
end
toc
Elapsed time is 3.782376 seconds.

В этом примере показано, как создать файл MEX для выполнения непрерывного вейвлет-преобразования (CWT) с использованием сгенерированного кода CUDA.

Во-первых, убедитесь в наличии графического процессора с поддержкой CUDA и компилятора NVCC. Для проверки правильности конфигурации см. Приложение проверки и установки среды графического процессора (GPU Coder).

Создайте объект конфигурации кодера графического процессора.

cfg = coder.gpuConfig('mex');

Генерация сигнала 100 000 выборок при частоте 1000 Гц. Сигнал состоит из двух косинусных волн с непересекающимися временными опорами.

t = 0:.001:(1e5*0.001)-0.001;
x = cos(2*pi*32*t).*(t > 10 & t<=50)+cos(2*pi*64*t).*(t >= 60 & t < 90)+ ...
    0.2*randn(size(t));

Приведите сигнал, чтобы использовать единственную точность. Вычисления GPU часто выполняются более эффективно с одной точностью. Однако можно создать код для двойной точности, если графический процессор NVIDIA поддерживает его.

x = single(x);

Создайте файл MEX графического процессора и отчет о создании кода. Чтобы разрешить создание файла MEX, необходимо указать свойства (класс, размер и сложность) трех входных параметров:

  • coder.typeof(single(0),[1 1e5]) задает вектор строки длиной 100 000, содержащий вещественное значение single значения.

  • coder.typeof('c',[1 inf]) задает символьный массив произвольной длины.

  • coder.typeof(0) задает вещественное значение double значение.

codegen cwt -config cfg -args {coder.typeof(single(0),[1 1e5]),coder.typeof('c',[1 inf]),coder.typeof(0)} -report
Code generation successful: To view the report, open('codegen/mex/cwt/html/report.mldatx').

Флаг -report является необязательным. Используя -report создает отчет о создании кода. На вкладке Сводка отчета можно найти ссылку на метрику кода графического процессора, которая содержит подробную информацию, например, количество созданных ядер CUDA и объем выделенной памяти.

Запустите файл MEX для данных и постройте график скалограммы. Подтвердите, что график согласуется с двумя непересекающимися косинусными волнами.

[cfs,f] = cwt_mex(x,'Morse',1e3);
image('XData',t,'YData',f,'CData',abs(cfs),'CDataMapping','scaled')
set(gca,'YScale','log')
axis tight
xlabel('Seconds')
ylabel('Hz')
title('CWT of Two-Tone Signal')

Выполните команду CWT выше без добавления _mex. Подтвердите идентичность скалограмм MATLAB и GPU MEX.

[cfs2,f2] = cwt(x,'Morse',1e3);
max(abs(cfs2(:)-cfs(:)))
ans =

  single

  6.7583e-07

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

Создайте две синусоидальные волны с частотами 32 и 64 Гц. Данные дискретизируют при частоте 1000 Гц. Две синусоидальные волны имеют несвязанную поддержку во времени. Добавьте белый гауссов шум со стандартным отклонением 0,05. Получение и построение графика CWT с использованием импульса Морса по умолчанию.

Fs = 1e3;
t = 0:1/Fs:1;
x = cos(2*pi*32*t).*(t>=0.1 & t<0.3)+sin(2*pi*64*t).*(t>0.7);
wgnNoise = 0.05*randn(size(t));
x = x+wgnNoise;
cwt(x,1000)

Figure contains an axes. The axes with title Magnitude Scalogram contains 3 objects of type image, line, area.

График использует логарифмическую частотную ось, поскольку частоты в CWT являются логарифмическими. В MATLAB логарифмические оси находятся в степенях 10 (десятилетия). Вы можете использовать cwtfreqbounds определяют, каковы минимальные и максимальные частоты полосы пропускания для заданной длины сигнала, частоты дискретизации и импульса.

[minf,maxf] = cwtfreqbounds(numel(x),1000);

Вы видите, что по умолчанию MATLAB поместил деления частоты на 10 и 100, потому что это мощности 10 между минимальной и максимальной частотами. Если вы хотите добавить больше засечек частотной оси, вы можете получить логарифмически разнесенный набор частот между минимальной и максимальной частотами, используя следующее.

numfreq = 10;
freq = logspace(log10(minf),log10(maxf),numfreq);

Затем переместите маркер перемещения к текущим осям и замените засечки и метки частотной оси на следующие.

AX = gca;
AX.YTickLabelMode = 'auto';
AX.YTick = freq;

Figure contains an axes. The axes with title Magnitude Scalogram contains 3 objects of type image, line, area.

В CWT частоты вычисляются в степенях двух. Чтобы создать деления частоты и делений в степенях два, можно сделать следующее.

newplot;
cwt(x,1000);
AX = gca;
freq = 2.^(round(log2(minf)):round(log2(maxf)));
AX.YTickLabelMode = 'auto';
AX.YTick = freq;

Figure contains an axes. The axes with title Magnitude Scalogram contains 3 objects of type image, line, area.

В этом примере показано, как масштабировать значения скалограммы по максимальному абсолютному значению на каждом уровне для печати.

Загрузите сигнал и отобразите скалограмму по умолчанию. Измените карту цветов на pink(240).

load noisdopp
cwt(noisdopp)
colormap(pink(240))

Figure contains an axes. The axes with title Magnitude Scalogram contains 3 objects of type image, line, area.

Возьмем CWT сигнала и получим вейвлет-коэффициенты и частоты.

[cfs,frq] = cwt(noisdopp);

Для эффективного нахождения максимального значения коэффициентов на каждой частоте (уровне) сначала транспонируют абсолютное значение коэффициентов. Найдите минимальное значение на каждом уровне. На каждом уровне вычитайте минимальное значение уровня.

tmp1 = abs(cfs);
t1 = size(tmp1,2);
tmp1 = tmp1';
minv = min(tmp1);
tmp1 = (tmp1-minv(ones(1,t1),:));

Найти максимальное значение на каждом уровне tmp1. Для каждого уровня разделите каждое значение на максимальное значение на этом уровне. Умножьте результат на количество цветов в карте цветов. Установите равным 1 все нулевые записи. Транспонируйте результат.

maxv = max(tmp1);
maxvArray = maxv(ones(1,t1),:);
indx = maxvArray<eps;
tmp1 = 240*(tmp1./maxvArray);
tmp2 = 1+fix(tmp1);
tmp2(indx) = 1;
tmp2 = tmp2';

Просмотрите результат. Теперь значения скалограммы масштабируются на максимальное абсолютное значение на каждом уровне. Частоты отображаются в линейном масштабе.

t = 0:length(noisdopp)-1;
pcolor(t,frq,tmp2);
shading interp
ylabel('Frequency')
title('Scalogram Scaled By Level')
colormap(pink(240))

Figure contains an axes. The axes with title Scalogram Scaled By Level contains an object of type surface.

Этот пример показывает, что увеличение P2 произведения временной полосы Морса создает вейвлет с большим количеством колебаний под его огибающей. Увеличение P2 сужает вейвлет по частоте.

Создайте два банка фильтров. Один банк фильтров имеет значение по умолчанию TimeBandwidth значение 60. Второй банк фильтров имеет TimeBandwidth значение 10. SignalLength для обоих банков фильтров - 4096 образцов.

sigLen = 4096;
fb60 = cwtfilterbank('SignalLength',sigLen);
fb10 = cwtfilterbank('SignalLength',sigLen,'TimeBandwidth',10);

Получение вейвлетов временной области для банков фильтров.

[psi60,t] = wavelets(fb60);
[psi10,~] = wavelets(fb10);

Используйте scales функция для поиска основного вейвлета для каждого набора фильтров.

sca60 = scales(fb60);
sca10 = scales(fb10);
[~,idx60] = min(abs(sca60-1));
[~,idx10] = min(abs(sca10-1));
m60 = psi60(idx60,:);
m10 = psi10(idx10,:);

Так как квота временной полосы больше для fb60 банка фильтров, проверьте m60 вейвлет имеет больше колебаний под своей оболочкой, чем m10 вейвлет.

subplot(2,1,1)
plot(t,abs(m60))
grid on
hold on
plot(t,real(m60))
plot(t,imag(m60))
xlim([-30 30])
legend('abs(m60)','real(m60)','imag(m60)')
title('TimeBandwidth = 60')
subplot(2,1,2)
plot(t,abs(m10))
grid on
hold on
plot(t,real(m10))
plot(t,imag(m10))
xlim([-30 30])
legend('abs(m10)','real(m10)','imag(m10)')
title('TimeBandwidth = 10')

Figure contains 2 axes. Axes 1 with title TimeBandwidth = 60 contains 3 objects of type line. These objects represent abs(m60), real(m60), imag(m60). Axes 2 with title TimeBandwidth = 10 contains 3 objects of type line. These objects represent abs(m10), real(m10), imag(m10).

Выровнять пики m60 и m10 частотные характеристики величины. Проверьте частотную характеристику m60 вейвлет уже, чем частотный отклик для m10 вейвлет.

cf60 = centerFrequencies(fb60);
cf10 = centerFrequencies(fb10);

m60cFreq = cf60(idx60);
m10cFreq = cf10(idx10);

freqShift = 2*pi*(m60cFreq-m10cFreq);
x10 = m10.*exp(1j*freqShift*(-sigLen/2:sigLen/2-1));

figure
plot([abs(fft(m60)).' abs(fft(x10)).'])
grid on
legend('Time-bandwidth = 60','Time-bandwidth = 10')
title('Magnitude Frequency Responses')

Figure contains an axes. The axes with title Magnitude Frequency Responses contains 2 objects of type line. These objects represent Time-bandwidth = 60, Time-bandwidth = 10.

В этом примере показано, как нарисовать скалограмму CWT на рисунке.

Загрузите образец речи. Данные дискретизируются при 7418 Гц. Постройте график скалограммы CWT по умолчанию.

load mtlb
cwt(mtlb,Fs)

Figure contains an axes. The axes with title Magnitude Scalogram contains 3 objects of type image, line, area.

Получить непрерывное вейвлет-преобразование сигнала и частоты CWT.

[cfs,frq] = cwt(mtlb,Fs);

cwt устанавливает оси времени и частоты в скалограмме. Создайте вектор, представляющий время выборки.

tms = (0:numel(mtlb)-1)/Fs;

На новом рисунке постройте график исходного сигнала в верхней части графика и скалограммы в нижней части графика. Постройте график частот в логарифмическом масштабе.

figure
subplot(2,1,1)
plot(tms,mtlb)
axis tight
title('Signal and Scalogram')
xlabel('Time (s)')
ylabel('Amplitude')
subplot(2,1,2)
surface(tms,frq,abs(cfs))
axis tight
shading flat
xlabel('Time (s)')
ylabel('Frequency (Hz)')
set(gca,'yscale','log')

Figure contains 2 axes. Axes 1 with title Signal and Scalogram contains an object of type line. Axes 2 contains an object of type surface.

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

свернуть все

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

cwt функция также принимает входные данные массива GPU. Дополнительные сведения см. в разделе Запуск функций MATLAB на графическом процессоре (панель инструментов параллельных вычислений).

Типы данных: single | double
Поддержка комплексного номера: Да

Аналитический вейвлет, используемый для вычисления CWT, указанный как 'morse', 'amor', или 'bump'. Эти векторы символов определяют аналитический Морс, Морлет (Габор) и ударный импульс соответственно.

По умолчанию вейвлет Морса имеет параметр симметрии (γ), равный 3, и произведение временной полосы, равное 60.

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

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

Период выборки, также называемый длительностью времени, определяется как скалярная длительность. Допустимые длительности: years, days, hours, minutes, и seconds. Нельзя использовать длительность календаря. При указании ts, то вы не можете указать fs.

Пример: wt = cwt(x,hours(12))

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

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

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

Пример: 'ExtendSignal',false указывает, что сигнал не расширен.

Опция для симметричного расширения входного сигнала путем отражения, определяемая как разделенная запятыми пара, состоящая из 'ExtendSignal' и либо true или false. Симметричное расширение сигнала может ослабить граничные эффекты. При указании true, то сигнал удлиняется. При указании false, то сигнал не выдвигается.

Пределы частоты для использования в CWT, определяемые как двухэлементный вектор с положительными строго увеличивающимися записями. Первый элемент определяет наименьшую пиковую частоту полосы пропускания и должен быть больше или равен произведению пиковой частоты импульса в герцах и двух стандартных временных отклонений, разделенных на длину сигнала. Второй элемент определяет максимальную пиковую частоту полосы пропускания и должен быть меньше или равен частоте Найквиста. Логарифм основания 2 отношения максимальной частоты к минимальной частоте должен быть больше или равен 1/NV где NV - число голосов на октаву.

Если заданы пределы частоты за пределами допустимого диапазона, cwt усечение пределов до минимального и максимального допустимых значений. Использовать cwtfreqbounds определение частотных пределов для различных параметризаций CWT. Для комплексных сигналов (-1) *flimits используется для антианалитической части, где flimits является вектором, указанным FrequencyLimits.

Пример: 'FrequencyLimits',[0.1 0.3]

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

Пределы периода для использования в CWT, определяемые как двухэлементный массив длительности со строго увеличивающимися положительными записями. Первый элемент должен быть больше или равен 2 *ts где ts - период выборки. Логарифм основания 2 отношения минимального периода к максимальному периоду должен быть меньше или равен -1/NV где NV - число голосов на октаву. Максимальный период не может превышать длину сигнала, деленную на произведение двух стандартных временных отклонений вейвлета и пиковой частоты вейвлета.

Если указаны пределы периода за пределами допустимого диапазона, cwt усечение пределов до минимального и максимального допустимых значений. Использовать cwtfreqbounds определяют пределы периода для различных параметризаций вейвлет-преобразования. Для комплексных сигналов (-1) *plimits используется для антианалитической части, где plimits является вектором, указанным PeriodLimits.

Пример: 'PeriodLimits',[seconds(0.2) seconds(1)]

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

Количество голосов на октаву для использования в CWT, указанное как разделенная запятыми пара, состоящая из 'VoicesPerOctave' и четное целое число от 4 до 48. Шкалы CWT дискретизируются с использованием заданного числа голосов на октаву. Разброс энергии вейвлета по частоте и времени автоматически определяет минимальную и максимальную шкалы.

Произведение временной полосы волны Морса, указанное как пара, разделенная запятыми, состоящая из 'TimeBandwidth' и скаляр больше 3 и меньше или равен 120. Параметр симметрии, гамма (γ), зафиксирован на 3. Вейвлеты с большей шириной полосы пропускания имеют большие расширения по времени и более узкие расширения по частоте. Стандартное отклонение импульса Морса во времени составляет приблизительно sqrt(TimeBandwidth/2). Стандартное отклонение импульса Морса по частоте составляет приблизительно 1/2*sqrt(2/TimeBandwidth).

При указании 'TimeBandwidth', вы не можете указать 'WaveletParameters'. Чтобы задать как симметрию, так и временную полосу пропускания, используйте 'WaveletParameters' вместо этого.

В нотации Морса Вейвлетса, TimeBandwidth является P2.

Симметрия и произведение временной ширины волны Морса, указанное как разделенная запятыми пара, состоящая из 'WaveletParameters' и двухэлементный вектор скаляров. Первым элементом является симметрия γ, которая должна быть больше или равна 1. Второй элемент - произведение временной полосы, которое должно быть строго больше γ. Отношение произведения временной полосы к γ не может превышать 40.

Когда γ равно 3, вейвлет Морса идеально симметричен в частотной области и асимметрия равна 0. Когда γ больше 3, перекос является положительным. Когда γ меньше 3, перекос отрицательный.

Дополнительные сведения см. в разделе Вейвлеты Морзе.

При указании 'WaveletParameters', вы не можете указать 'TimeBandwidth'.

Число октав, указанное как разделенная запятыми пара, состоящая из 'NumOctaves' и положительное целое число. Число октав не может превышать log2(fmax/fmin) где fmax и fmin являются максимальной и минимальной частотами CWT (или периодами), определяемыми длиной сигнала, частотой дискретизации и вейвлетом. Посмотрите cwtfreqbounds для получения подробной информации.

'NumOctaves' пара «имя-значение» не рекомендуется и будет удалена в следующем выпуске. Рекомендуемый способ изменения частоты или диапазона периодов CWT - 'FrequencyLimits' или 'PeriodLimits' пары имя-значение. Вы не можете указать оба 'NumOctaves' и 'FrequencyLimits' или 'PeriodLimits' пары имя-значение.

Банк фильтров CWT, используемый для вычисления CWT, указанного как объект банка фильтров CWT. Если вы используете 'FilterBank' пара «имя-значение», другие параметры указать нельзя. Все опции для вычисления CWT определяются как свойства fb.

Если x - график, частота выборки или период выборки в fb должны согласовываться с частотой выборки или периодом выборки, определенным RowTimes расписания.

Пример: wt = cwt(x,'FilterBank',fb)

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

свернуть все

Непрерывное вейвлет-преобразование, возвращаемое как матрица комплексных значений. По умолчанию cwt использует аналитический вейвлет Морса (3,60), где 3 - симметрия, а 60 - произведение временной полосы. cwt использует 10 голосов на октаву. Если x вещественно-значимый, wt - матрица Na-by-N, где Na - число шкал, а N - число выборок в x. Если x является комплекснозначным, wt является 3-D матрицей, где первая страница является CWT для положительных шкал (аналитическая часть или компонент против часовой стрелки), а вторая страница является CWT для отрицательных шкал (антианалитическая часть или компонент по часовой стрелке). Минимальная и максимальная шкалы определяются автоматически на основе разброса энергии вейвлета по частоте и времени. Сведения об определении масштабов см. в разделе Алгоритмы.

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

Частоты CWT, возвращаемые как вектор. Если указана частота выборки, fs, то f в Гц. Если не указать fs, cwt прибыль f в циклах на образец.

Временные периоды, возвращаемые в виде массива длительностей. Продолжительность в том же формате, что и ts. Каждая строка соответствует периоду.

Конус влияния для CWT, возвращаемый как массив вещественных чисел или массив длительностей. Конус влияния указывает, где в CWT возникают краевые эффекты. Если указана частота выборки, fs, конус влияния в Гц. Если указать длительность скаляра, ts, конус влияния в периодах. Из-за краевых эффектов, дать меньше доверия к областям, которые находятся вне или перекрывают конус влияния.

Дополнительные сведения см. в разделе Граничные эффекты и конус влияния.

Банк фильтров CWT, используемый в CWT, возвращается как объект банка фильтров CWT. Посмотрите cwtfilterbank.

Коэффициенты масштабирования для CWT, если анализирующий вейвлет 'morse' или 'amor', возвращаемый как вектор реального или комплексного значения. Длина scalingcfs равно длине входа x.

Коэффициенты масштабирования не поддерживаются для ударного импульса.

Подробнее

свернуть все

Аналитические вейвлеты

Аналитические вейвлеты представляют собой комплексные вейвлеты, преобразование Фурье которых исчезает для отрицательных частот. Аналитические вейвлеты являются хорошим выбором при выполнении частотно-временного анализа с помощью CWT. Поскольку вейвлет-коэффициенты являются комплексно-значимыми, коэффициенты обеспечивают фазовую и амплитудную информацию анализируемого сигнала. Аналитические вейвлеты хорошо подходят для изучения того, как частотное содержание в реальных нестационарных сигналах развивается как функция времени.

Аналитические вейвлеты почти исключительно основаны на быстро уменьшающихся функциях. Если ψ (t) является аналитической быстро уменьшающейся функцией вовремя, то ее Фурье преобразовывает ψ^ (ω), быстро уменьшающаяся функция в частоте и маленькая за пределами некоторого интервала α где 0 <α <β. Ортогональные и биорфогональные вейвлеты обычно сконструированы так, чтобы иметь компактную поддержку во времени. Вейвлеты с компактной поддержкой во времени имеют относительно более низкую концентрацию энергии в частоте, чем вейвлеты, которые быстро уменьшаются во времени. Большинство ортогональных и биортогенных вейвлетов не симметричны в области Фурье.

Если целью является получение совместного частотно-временного представления сигнала, мы рекомендуем использовать cwt или cwtfilterbank. Обе функции поддерживают следующие аналитические вейвлеты:

  • Семейство морсов (по умолчанию)

  • Аналитический Морлет (Габор) Вейвлет

  • Удар

Если вы хотите выполнить частотно-временной анализ с использованием ортогональных или биоргональных вейвлетов, мы рекомендуем modwpt.

При использовании вейвлетов для частотно-временного анализа обычно преобразуются шкалы в частоты или периоды для интерпретации результатов. cwt и cwtfilterbank выполните преобразование. Соответствующие шкалы можно получить с помощью scales на факультативном cwt выходной аргумент fb.

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

Совет

Алгоритмы

свернуть все

Минимальный масштаб

Чтобы определить минимальную шкалу, найдите пиковую частоту startx базового вейвлета. Для вейвлетов Морса, расширить вейвлет так, чтобы преобразование Фурье вейвлета при δ радиан было равно 10% пиковой частоты. Наименьшая шкала имеет наибольшую частоту:

s0 =

В результате наименьшая шкала равна минимуму (2, s0). Для вейвлетов Морса наименьшая шкала обычно равна s0. Для вейвлета Морле наименьшая шкала обычно равна 2.

Максимальный масштаб

И минимальная, и максимальная шкалы CWT определяются автоматически на основе разброса энергии вейвлета по частоте и времени. Для определения максимальной шкалы CWT использует следующий алгоритм.

Стандартным отклонением небольшой волны Морзе вовремя, σt, является приблизительно P22, где P2 - продукт пропускной способности времени. Среднеквадратичное отклонение по частоте, startf, приблизительно равно 122P2. Если масштабировать вейвлет на несколько s > 1, длительность времени изменяется на 2sstartt = N, который является вейвлетом, растянутым до полной длины (N выборок) входного сигнала. Вы не можете перевести этот вейвлет или растянуть его дальше, не заставляя его обернуться, поэтому наибольшая шкала - пол ( N2startt).

Шкалы вейвлет-преобразования являются степенями 2 и обозначаются как s0 (21NV) j. NV - число голосов на октаву, а j находится в диапазоне от 0 до наибольшего масштаба. Для определенного малого масштаба s0:

s0 (21NV) j≤N2σt

Преобразование в log2:

jlog2 (21NV) ≤log2 (N2σts0)

j≤NVlog2 (N2σts0)

Поэтому максимальная шкала равна

s0 (21NV) пол (NVlog2 (N2startts0))

L1 Норма для CWT

В интегральной форме CWT сохраняет энергию. Однако при численной реализации CWT энергия не сохраняется. В этом случае, независимо от используемой нормализации, CWT не является ортонормированным преобразованием. cwt функция использует нормализацию L1.

Вейвлет-преобразования обычно используются L2 нормализации вейвлета. Для L2 нормы расширение сигнала на 1/с, где s больше 0, определяется следующим образом:

x (ts) 22=s‖x (t) ‖ 22

Энергия теперь в разы больше исходной энергии. При включении в преобразование Фурье умножение на 1 дает различные веса, применяемые к различным масштабам, так что пики на более высоких частотах уменьшаются больше, чем пики на более низких частотах.

Во многих приложениях нормализация L1 лучше. Определение нормы L1 не включает возведение значения в квадрат, поэтому коэффициент сохранения равен 1/s вместо 1s. Вместо уменьшения высокочастотных амплитуд, как в норме L2, для нормализации L1 все частотные амплитуды нормируются до одинаковой величины. Поэтому использование L1 нормы показывает более точное представление сигнала. См. пример «Непрерывное вейвлет-преобразование двух сложных экспоненциалов».

Вопросы совместимости

развернуть все

Не рекомендуется начинать с R2018a

Ссылки

[1] Лилли, Дж. М. и С. С. Ольхеде. «Обобщенные вейвлеты Морса как суперсемейство аналитических вейвлетов». Транзакции IEEE по обработке сигналов 60, № 11 (ноябрь 2012 г.): 6036-6041. https://doi.org/10.1109/TSP.2012.2210890.

[2] Лилли, Дж. М. и С.К. Ольхеде. «Свойства более высокого порядка аналитических вейвлетов». Транзакции IEEE по обработке сигналов 57, № 1 (январь 2009 года): 146-160. https://doi.org/10.1109/TSP.2008.2007607.

[3] Лилли, J. M. jLab: Пакет анализа данных для Matlab, версия 1.6.2. 2016. http://www.jmlilly.net/jmlsoft.html.

[4] Лилли, Джонатан М. «Анализ элементов: метод на основе вейвлета для анализа локализованных во времени событий в шумных временных рядах». Труды Королевского общества A: Математические, физические и инженерные науки 473, № 2200 (30 апреля 2017): 20160776. https://doi.org/10.1098/rspa.2016.0776.

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

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