cwt

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

Смотрите 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 и Непрерывного Преобразования Вейвлета Двух Комплексных экпонент.

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 в подграфике, используйте функцию построения графика. См. График CWT Scalogram в Подграфике.

Примеры

свернуть все

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

load mtlb;
w = cwt(mtlb);

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

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

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

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

cwt(mtlb,Fs)

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

Получите CWT данных о землетрясении Кобе. Данные являются сейсмографом (вертикальное ускорение, nm/sq.sec) измерения, зарегистрированные в Университете Тасмании, Хобарт, Австралия 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 object. The axes object 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 object. The axes object 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 object. The axes object with title Magnitude Scalogram contains 3 objects of type image, line, area.

Создайте две комплексных экпоненты, различных амплитуд, с частотами 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)

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

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

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

Создайте сигнал, состоявший из двух синусоид с непересекающейся поддержкой вовремя. Одна синусоида имеет частоту 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')

Figure contains an axes object. The axes object 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 object. The axes object with title CWT Filter Bank contains 24 objects of type line.

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

figure
cwt(x,'FilterBank',fb)

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

Выполните этот скрипт и используйте 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.

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

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

Создайте объект настройки Кодера GPU.

cfg = coder.gpuConfig('mex');

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

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

Бросьте сигнал использовать одинарную точность. Вычисления графического процессора часто более эффективно делаются в одинарной точности. Можно однако также сгенерировать код для двойной точности, если графический процессор 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 генерирует отчет генерации кода. Во вкладке Summary отчета можно найти метрическую ссылку графического процессора кода, которая предоставляет подробную информацию, такую как количество сгенерированных ядер CUDA и сколько памяти было выделено.

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

[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 и MEX графического процессора scalograms идентичны.

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

  single

  6.7583e-07

В этом примере показано, как изменить подписи по осям частоты по умолчанию для 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)

Figure contains an axes object. The axes object 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 object. The axes object 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 object. The axes object with title Magnitude Scalogram contains 3 objects of type image, line, area.

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

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

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

Figure contains an axes object. The axes object 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';

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

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 object. The axes object with title Scalogram Scaled By Level contains an object of type surface.

Этот пример показывает что, увеличивая продукт полосы пропускания времени 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')

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

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

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

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

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

load mtlb
cwt(mtlb,Fs)

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

Получите непрерывное преобразование вейвлета сигнала и частоты 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')

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

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

свернуть все

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

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

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

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

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

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

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

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

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

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

Аргументы name-value

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

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

Опция, чтобы расширить входной сигнал симметрично отражением в виде разделенной запятой пары, состоящей из 'ExtendSignal' и любой true или false. Расширение сигнала симметрично может смягчить граничные последствия. Если вы задаете true, затем сигнал расширен. Если вы задаете false, затем сигнал не расширен.

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

log2(freqMax/freqMin) ≥ 1/NV.

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

Пример: wt = cwt(x,1000,'VoicesPerOctave',10,'FrequencyLimits',[80 90])

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

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

log2(pMin/pMax) ≤ -1/NV.

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

Пример: wt = cwt(x,seconds(0.1),'VoicesPerOctave',10,'PeriodLimits',[seconds(0.2) seconds(3)])

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

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

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

  • Удар

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

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

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

Советы

Алгоритмы

свернуть все

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

Чтобы определить минимальную шкалу, найдите пиковую частоту ω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:

jlog2(21NV)log2(N2σts0)

jNVlog2(N2σts0)

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

s0(21NV)floor(NVlog2(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. https://doi.org/10.1109/TSP.2012.2210890.

[2] Лилли, J.M., и Южная Каролина Olhede. “Свойства высшего порядка Аналитических Вейвлетов”. Транзакции 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.

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

Введенный в R2017b