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) текущая фигура. Чтобы построить график скалограммы в подграфике, используйте функцию построения графика. Смотрите Plot CWT Scalogram in Subplot.

Примеры

свернуть все

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

load mtlb;
w = cwt(mtlb);

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

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 нормализации. Можно проверить это, выполнив этот скрипт и исследуя каждый подграфик с помощью Data Cursor.

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

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

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

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

Загрузка данных сейсмографа, зарегистрированных во время землетрясения в Кобе в 1995 году. Данные представляют собой сейсмографические (вертикальное ускорение, нм/кв.с) измерения, зарегистрированные в Университете Тасмании, Хобарт, Австралия, 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 и Setup (GPU Coder), чтобы убедиться, что у вас есть правильные строения.

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

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

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

x = single(x);

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

  • coder.typeof(single(0),[1 1e5]) задает вектор-строку длины 100000, содержащую вещественные 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 генерирует отчет генерации кода. На вкладке Summary отчета можно найти ссылку на метрики кода GPU, которая предоставляет подробную информацию, такую как количество сгенерированных ядер 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. The 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 filter bank, проверьте 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).

Выравнивание 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. 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);

The 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 на графическом процессоре (Parallel Computing Toolbox).

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

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

Вейвлет Морзе по умолчанию имеет параметр симметрии (γ) равное 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, перекос отрицательный.

Для получения дополнительной информации см. Morse Wavelets.

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

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

The '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.

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

Совет

Алгоритмы

свернуть все

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

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

s0=ωx'π

В результате наименьшая шкала является минимумом (2, s0). Для Морзе вейвлетов самая маленькая шкала, как правило, s0. Для вейвлета Морле наименьшая шкала обычно равен 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

Преобразование в лог2:

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

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

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

[4] Lilly, Jonathan M. «Element Analysis: A Wavelet-Based Method for Analysing Time-Localized Events in Noisy Time Series». Труды Королевского общества А: Математические, физические и инженерные науки 473, № 2200 (30 апреля 2017): 20160776. https://doi.org/10.1098/rspa.2016.0776.

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

.
Введенный в R2016b