scal2frq

Масштабируйтесь к частоте

Описание

пример

frq = scal2frq(A,wname,delta) возвращает псевдочастоты, соответствующие шкалам, данным A и вейвлет задан wname и период выборки delta. Выход frq с действительным знаком и имеет те же размерности как A.

frq = scal2frq(A,wname) эквивалентно frq = scal2frq (A, wname,1).

Примеры

свернуть все

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

Создайте вектор из шкал с 10 речью на октаву более чем пять октав.

vpo = 10;
no = 5;
a0 = 2^(1/vpo);
ind = 0:vpo*no;
sc = a0.^ind;

Проверьте, что область значений шкал покрывает пять октав.

log2(max(sc)/min(sc))
ans = 5.0000

Если вы строите шкалы, можно использовать Data Cursor, чтобы подтвердить что шкала в индексе n+10 дважды шкала в индексе n. Установите y-метки-деления отмечать каждую октаву.

plot(ind,sc)
title('Scales')
xlabel('Index')
ylabel('Scale')
grid on
set(gca,'YTick',2.^(0:5))

Преобразуйте шкалы в псевдочастоты для вейвлета Morlet с действительным знаком. Во-первых, примите, что период выборки равняется 1.

pf = scal2frq(sc,"morl");
T = [sc(:) pf(:)];
T = array2table(T,'VariableNames',{'Scale','Pseudo-Frequency'});
disp(T)
    Scale     Pseudo-Frequency
    ______    ________________

         1          0.8125    
    1.0718         0.75809    
    1.1487         0.70732    
    1.2311         0.65996    
    1.3195         0.61576    
    1.4142         0.57452    
    1.5157         0.53605    
    1.6245         0.50015    
    1.7411         0.46666    
    1.8661         0.43541    
         2         0.40625    
    2.1435         0.37904    
    2.2974         0.35366    
    2.4623         0.32998    
     2.639         0.30788    
    2.8284         0.28726    
    3.0314         0.26803    
     3.249         0.25008    
    3.4822         0.23333    
    3.7321          0.2177    
         4         0.20313    
    4.2871         0.18952    
    4.5948         0.17683    
    4.9246         0.16499    
     5.278         0.15394    
    5.6569         0.14363    
    6.0629         0.13401    
     6.498         0.12504    
    6.9644         0.11666    
    7.4643         0.10885    
         8         0.10156    
    8.5742        0.094761    
    9.1896        0.088415    
    9.8492        0.082494    
    10.556         0.07697    
    11.314        0.071816    
    12.126        0.067006    
    12.996        0.062519    
    13.929        0.058332    
    14.929        0.054426    
        16        0.050781    
    17.148        0.047381    
    18.379        0.044208    
    19.698        0.041247    
    21.112        0.038485    
    22.627        0.035908    
    24.251        0.033503    
    25.992         0.03126    
    27.858        0.029166    
    29.857        0.027213    
        32        0.025391    

Примите, что данные производятся на уровне 100 Гц. Создайте таблицу со шкалами, соответствующими псевдочастотами и периодами. С тех пор существует 10 речи на октаву, отображает каждую десятую строку в таблице. Заметьте, что для каждого удвоения шкалы, псевдочастота сокращается в половине.

Fs = 100;
DT = 1/Fs;
pf = scal2frq(sc,"morl",DT);
T = [sc(:)/Fs pf(:) 1./pf(:)];
T = array2table(T,'VariableNames',{'Scale','Pseudo-Frequency','Period'});
T(1:vpo:end,:)
ans=6×3 table
    Scale    Pseudo-Frequency     Period 
    _____    ________________    ________

    0.01           81.25         0.012308
    0.02          40.625         0.024615
    0.04          20.313         0.049231
    0.08          10.156         0.098462
    0.16          5.0781          0.19692
    0.32          2.5391          0.39385

Отметьте присутствие Δt=1Fs включите scal2frq. Это необходимо для того, чтобы достигнуть соответствующего преобразования шкалы к частоте. Δt необходим, чтобы настроить необработанные шкалы правильно. Например, с:

f = scal2frq(1,'morl',0.01);

Вы действительно спрашиваете, что происходит с центральной частотой вейвлета родительского элемента Морлет, если вы расширяете вейвлет 0,01. Другими словами, каков эффект на центральной частоте если вместо ψ(t), вы смотрите на ψ(t/0.01). Δt обеспечивает правильный поправочный коэффициент по шкалам.

Вы, возможно, получили те же результаты первым преобразованием шкал к их настроенным размерам и затем использованию scal2frq without specifying Δt.

scadjusted = sc.*0.01;
pf2 = scal2frq(scadjusted,'morl');
max(pf-pf2)
ans = 0

Пример показывает, как создать контурный график CWT с помощью аппроксимированных частот в Гц.

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

Fs = 1000;
t = 0:1/Fs:1-1/Fs;
x = 1.5*cos(2*pi*100*t).*(t<0.25)+1.5*cos(2*pi*50*t).*(t>0.5 & t<=0.75);
x = x+0.05*randn(size(t));

Получите CWT входного сигнала и постройте результат.

[cfs,f] = cwt(x,Fs);
contour(t,f,abs(cfs).^2); 
axis tight;
grid on;
xlabel('Time');
ylabel('Approximate Frequency (Hz)');
title('CWT with Time vs Frequency');

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

свернуть все

Шкалы в виде положительного вектора с действительным знаком.

Вейвлет в виде вектора символов или строкового скаляра. Смотрите wavefun для получения дополнительной информации.

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

Пример: pf = scal2frq([1:5],"db4",0.01)

Больше о

свернуть все

Псевдочастоты

Существует только аппроксимированный ответ для отношения между шкалой и частотой.

В анализе вейвлета способ связать шкалу с частотой состоит в том, чтобы определить центральную частоту вейвлета, Fc, и использовать следующее отношение:

Fa=Fca

где

  • a является шкалой.

  • Fc является центральной частотой вейвлета в Гц.

  • Fa является псевдочастотой, соответствующей шкале a в Гц.

Идея состоит в том, чтобы сопоставить с данным вейвлетом чисто периодический сигнал частоты Fc. Частотой, максимизирующей преобразование Фурье модуля вейвлета, является Fc. centfrq функция вычисляет центральную частоту для заданного вейвлета. От вышеупомянутого отношения это видно, что шкала обратно пропорциональна псевдочастоте. Например, если шкала увеличивается, вейвлет становится более распространенным, приводя к более низкой псевдочастоте.

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

Центральные частоты для действительных и комплексных вейвлетов

Как вы видите, центральное основанное на частоте приближение (красные) получения основные (синие) колебания вейвлета. Центральная частота является удобной и простой характеристикой доминирующей частоты вейвлета.

Ссылки

[1] Abry, П. Онделеттес и турбулентность. Multirésolutions, алгоритмы de décomposition, инвариантность d'échelles et signaux de pression. Дидро, Editeurs des sciences et des arts, Париж, 1997.

Смотрите также

Представлено до R2006a