wt

Непрерывное вейвлет с набором фильтров

Описание

пример

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

[cfs,f] = wt(fb,x) возвращает частоты f соответствующий шкалам (строкам) cfs если SamplingPeriod свойство не задано в банке фильтров CWT fb. Если вы не задаете частоту дискретизации, f находится в циклах/выборке.

[cfs,f,coi] = wt(fb,x) возвращает конус влияния coi для CWT. coi находится в тех же модулях, что и f. Если вход x комплексно, coi применяется к обеим страницам cfs.

пример

[cfs,f,coi,scalcfs] = wt(fb,x) возвращает коэффициенты масштабирования scalcfs для вейвлет. Коэффициенты масштабирования не поддерживаются для вейвлет.

[cfs,p] = wt(fb,x) возвращает периоды p соответствующий шкалам (строкам) cfs если вы задаете период дискретизации в банке фильтров CWT. p имеет те же модули измерения и формат, что и скаляр выборки длительности.

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

[cfs,p,coi,scalcfs] = wt(fb,x) возвращает коэффициенты масштабирования scalcfs для вейвлет. Коэффициенты масштабирования не поддерживаются для вейвлет.

Примеры

свернуть все

Загрузите шумный сигнал Доплера. Создайте банк фильтров CWT, который можно применить к сигналу.

load noisdopp
fb = cwtfilterbank('SignalLength',numel(noisdopp));

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

[cfs,f,coi] = wt(fb,noisdopp);

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

t = 0:numel(noisdopp)-1;
pcolor(t,f,abs(cfs))
shading flat
set(gca,'YScale','log')
hold on
plot(t,coi,'w-','LineWidth',3)
xlabel('Time (Samples)')
ylabel('Normalized Frequency (cycles/sample)')
title('Scalogram')

Figure contains an axes. The axes with title Scalogram contains 2 objects of type surface, line.

Создайте и постройте график сигнала, дискретизированного с частотой 1000 Гц. Создайте банк фильтров CWT, который можно использовать по сигналу. Поскольку сигнал является периодическим, установите свойство расширения контура банка фильтров равным 'periodic'.

Fs = 1000;
t = 0:1/Fs:1-1/Fs;
sig = 3*sin(2*pi*20*t) + cos(2*pi*2*t);
fb = cwtfilterbank('SignalLength',length(sig),'SamplingFrequency',Fs,'Boundary','periodic');
plot(t,sig)
xlabel('Time (sec)')
title('Signal')

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

Возьмите CWT сигнала. Верните вейвлет и масштабирующие коэффициенты.

[cfs,~,~,scalcfs] = wt(fb,sig);

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

xrec0 = icwt(cfs,'SignalMean',mean(sig));
xrec1 = icwt(cfs,'ScalingCoefficients',scalcfs);
plot(t,sig-xrec0)
hold on
plot(t,sig-xrec1)
grid on
legend('Using mean(sig)','Using scalcfs')
title('Difference Between Reconstructions')

Figure contains an axes. The axes with title Difference Between Reconstructions contains 2 objects of type line. These objects represent Using mean(sig), Using scalcfs.

Коэффициенты масштабирования приводят к значительно более точной реконструкции. Чтобы исследовать источник драматического улучшения, создайте второй сигнал, состоящий из компонента 2 Гц исходного сигнала. Сравните коэффициенты масштабирования с сигналом 2 Гц. Коэффициенты масштабирования и сигнал 2 Гц фактически идентичны. Использование коэффициентов масштабирования помогает с восстановлением, потому что компонент 2 Гц не представим вейвлет с этой частотой и длиной дискретизации.

figure
sig2hz = cos(2*pi*2*t);
plot(t,sig2hz)
hold on
plot(t,scalcfs)
grid on
title('Comparing Scaling Coefficients with 2 Hz Component')
xlabel('Time (sec)')
legend('2 Hz Component', 'Scaling Coefficients')

Figure contains an axes. The axes with title Comparing Scaling Coefficients with 2 Hz Component contains 2 objects of type line. These objects represent 2 Hz Component, Scaling Coefficients.

Этот пример показывает, как использование группы фильтров 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.

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

свернуть все

Непрерывная группа фильтров преобразования вейвлета (CWT), заданная как cwtfilterbank объект.

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

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

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

свернуть все

Непрерывное преобразование вейвлета, возвращенное как матрица или трехмерный массив комплексных чисел. Если x является реальным, cfs является матрицей 2-D, где каждая строка соответствует одной шкале. Размер столбца cfs равно длине x. Если x является комплексным, cfs является трехмерный массив, где первая страница является CWT для положительных шкал (аналитическая часть или компонент против часовой стрелки), а вторая страница является CWT для отрицательных шкал (антианалитическая часть или компонент против часовой стрелки).

Частоты, возвращенные как вектор, соответствующие шкалам (строкам) cfs если 'SamplingPeriod' не задан в fb. Если вы задаете частоту дискретизации, f находится в герце. Если вы не задаете частоту, f находится в циклах/выборке.

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

Периоды, возвращенные как массив длительностей, соответствующих шкалам (строкам) cfs если fb имеет заданный период дискретизации. p имеет те же модули измерения и формат, что и скаляр выборки длительности.

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

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

Для получения дополнительной информации см. «Граничные Эффекты и конус влияния».

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

Масштабные коэффициенты для вейвлет, возвращенные как вектор с той же длиной, что и x. Если x является реальным, scalcfs реально ценится. Если x является комплексным, scalcfs является комплексным.

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

Совет

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

  • При выполнении нескольких CWT, например, внутри цикла for-loop, рекомендуемый рабочий процесс должен сначала создать cwtfilterbank Объект и затем используйте wt функция объекта. Этот рабочий процесс минимизирует накладные расходы и максимизирует эффективность. Смотрите Использование банка фильтров CWT на нескольких временных рядах.

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

Генерация кода C/C + +
Сгенерируйте код C и C++ с помощью Coder™ MATLAB ®

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