wt

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

Описание

пример

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

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

Создайте и постройте сигнал, произведенный на уровне 1 000 Гц. Создайте набор фильтров 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')

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

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

В этом примере показано, как использование набора фильтров 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) в виде cwtfilterbank объект.

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

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

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

свернуть все

Непрерывный вейвлет преобразовывает, возвращенный как матрица или трехмерный массив комплексных чисел. Если x с действительным знаком, cfs 2D матрица, где каждая строка соответствует одной шкале. Размер столбца 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 сигнала, фильтры вейвлета создаются, чтобы иметь тот же тип данных как сигнал. Предупреждающее сообщение сгенерировано, когда вы применяете тот же набор фильтров к сигналу с различным типом данных. Изменение типов данных идет со стоимостью перепроектирования или изменения точности набора фильтров. Для оптимальной производительности используйте сопоставимый тип данных.

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

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

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

Введенный в R2018a