cwt

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

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

Синтаксис

wt = cwt(x)
wt = cwt(x,wname)
[wt,f] = cwt(___,fs)
[wt,period] = cwt(___,ts)
[wt,f,coi] = cwt(___,fs)
[wt,period,coi] = cwt(___,ts)
[___] = cwt(___,Name,Value)
[___,coi,fb] = cwt(___)
[___,fb,scalingcfs] = cwt(___)
cwt(___)

Описание

пример

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

Функция cwt использует нормализацию L1. С нормализацией L1, если у вас есть равные амплитудные колебательные компоненты в ваших данных в различных шкалах, у них будет равное значение в CWT. Используя нормализацию L1 показывает более точное представление сигнала. См. Норму L1 для CWT и Содействующих Амплитуд Синусоиды и Вейвлета.

Функция cwt поддерживает генерацию кода графического процессора. Смотрите Генерацию кода графического процессора для получения дополнительной информации.

пример

wt = cwt(x,wname) использует аналитический вейвлет, заданный wname, чтобы вычислить CWT. Допустимыми опциями для wname является 'morse', 'amor' и 'bump', которые задают Азбуку Морзе, Morlet (Габор) и вейвлет удара, соответственно. Если вы не задаете 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 scalogram. scalogram является абсолютным значением CWT как функция времени и частоты. Частота построена на логарифмическом масштабе. Конус влияния, показывающего, где краевые эффекты становятся значительными, также построен. Серые области вне пунктирной белой строки формируют рисунок областей, где краевые эффекты являются значительными. Если входной сигнал с комплексным знаком, положительное (против часовой стрелки) и отрицательный (по часовой стрелке), компоненты построены в отдельном scalograms.

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

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

Примечание

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

Примеры

свернуть все

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

load mtlb;
w = cwt(mtlb);

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

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

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

cwt(mtlb,Fs);

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

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)

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

Получите CWT данных о землетрясении Кобе. Частота дискретизации составляет 1 Гц.

load kobe

Отобразите данные о землетрясении на графике.

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

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

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

Отобразите данные на графике, включая конус влияния.

cwt(kobe,1)

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

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

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

cwt(kobe,minutes(1/60))

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

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

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')

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

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

Используйте cwt и набор фильтров, чтобы построить scalogram сигнала.

figure
cwt(x,'FilterBank',fb)

Выполните этот скрипт и используйте Data Cursor, чтобы подтвердить, что амплитуды коэффициентов вейвлета чрезвычайно равны амплитудам синусоидальных компонентов.

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

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

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

Используйте cwt, функционируют и берут CWT данных 250 раз. Отобразите используемое прошедшее время.

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.

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

Создайте две синусоиды с частотами 32 и 64 Гц. Данные выбираются на уровне 1 000 Гц. Эти две синусоиды имеют непересекающуюся поддержку вовремя. Добавьте белый Гауссов шум со стандартным отклонением 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)

График использует логарифмическую ось частоты, потому что частоты в 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;

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

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

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

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

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

Возьмите 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';

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

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

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

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

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')

Выровняйте peaks 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')

Этот пример показывает, как построить CWT scalogram в подграфике фигуры.

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

load mtlb
cwt(mtlb,Fs)

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

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

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

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

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

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')

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

свернуть все

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

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

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

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

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

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

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

Укажите необязательные аргументы в виде пар ""имя, значение"", разделенных запятыми. Имя (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 является P 2.

Симметрия и продукт пропускной способности времени вейвлета Морзе, заданного как пара, разделенная запятой, состоящая из 'WaveletParameters' и двухэлементный вектор скаляров.

Первый элемент является симметрией, γ, который должен быть больше, чем или равным 1. Второй элемент является продуктом пропускной способности времени, который должен быть строго больше, чем γ. Отношение продукта пропускной способности времени к γ не может превысить 40.

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

Если вы задаете 'WaveletParameters', вы не можете задать 'TimeBandwidth'.

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

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

Набор фильтров 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 для отрицательных шкал (антианалитическая часть или по часовой стрелке компонент). Минимальные и максимальные шкалы определяются автоматически на основе энергетического распространения вейвлета в частоте и время. См. Алгоритмы для получения информации о том, как шкалы определяются.

Типы данных: 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. Обе функции поддерживают следующие аналитические вейвлеты:

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

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

  • Удар

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

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

Для получения дополнительной информации относительно вейвлетов Азбуки Морзе, смотрите Вейвлеты Азбуки Морзе. Для руководства о том, как выбрать вейвлет, который является правильным для вашего приложения, смотрите, Выбирают Wavelet.

Генерация кода графического процессора

cwt поддерживает генерацию CUDA®code. У вас должны быть MATLAB® Coder™ и GPU Coder™, чтобы сгенерировать код графического процессора.

Указания и ограничения по применению:

  • Входной сигнал расписания не поддержан.

  • Все входные параметры должны быть постоянными и заданными во время компиляции.

  • Только аналитический Морзе ('morse') и Morlet ('amor') вейвлеты поддерживается.

  • Следующие входные параметры не поддержаны: ts (выбирающий период), пара "имя-значение" PeriodLimits, пара "имя-значение" NumOctave и пара "имя-значение" FilterBank.

  • Масштабирование коэффициента вывод и набор фильтров вывод не поддержано.

  • Графический вывод не поддержан.

Советы

Алгоритмы

свернуть все

Минимальная шкала

Чтобы определить минимальную шкалу, найдите пиковую частоту ωx из основного вейвлета. Для вейвлетов Азбуки Морзе расширьте вейвлет так, чтобы преобразование Фурье вейвлета в π радианы равны 10% пиковой частоты. Самая маленькая шкала происходит на самой большой частоте:

s0=ωx'π

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

Максимальная шкала

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

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

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

s0(21NV)jN2σt

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

jжурнал2(21NV)журнал2(N2σts0)

jNVжурнал2(N2σts0)

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

s0(21NV)floor(NVжурнал2(N2σts0))

Норма L1 для CWT

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

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

x(ts)22=sx(t)22

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

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

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

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

Не рекомендуемый запуск в R2018a

Ссылки

[1] Лилли, J. M. и С. К. Олхед. “Обобщенные Вейвлеты Азбуки Морзе как Суперсемейство Аналитических Вейвлетов”. Транзакции IEEE на Обработке сигналов. Издание 60, № 11, 2012, стр 6036–6041.

[2] Лилли, J. M. и С. К. Олхед. “Свойства высшего порядка Аналитических Вейвлетов”. Транзакции IEEE на Обработке сигналов. Издание 57, № 1, 2009, стр 146–160.

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

[4] Лилли, J. M. “Элементный анализ: основанный на вейвлете метод для анализа локализованных временем событий в шумных временных рядах”. Продолжения Королевского общества A. Объем 473: 20160776, 2017, стр 1–28. dx.doi.org/10.1098/rspa.2016.0776.

Введенный в R2017b