Масштабируйтесь к частоте
В этом примере показано, как псевдочастота изменяется, когда вы удваиваете шкалу.
Создайте вектор из шкал с 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, чтобы подтвердить что шкала в индексе дважды шкала в индексе . Установите 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
Отметьте присутствие включите scal2frq
. Это необходимо для того, чтобы достигнуть соответствующего преобразования шкалы к частоте. необходим, чтобы настроить необработанные шкалы правильно. Например, с:
f = scal2frq(1,'morl',0.01);
Вы действительно спрашиваете, что происходит с центральной частотой вейвлета родительского элемента Морлет, если вы расширяете вейвлет 0,01. Другими словами, каков эффект на центральной частоте если вместо , вы смотрите на . обеспечивает правильный поправочный коэффициент по шкалам.
Вы, возможно, получили те же результаты первым преобразованием шкал к их настроенным размерам и затем использованию scal2frq without specifying
.
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');
A
— ШкалыШкалы в виде положительного вектора с действительным знаком.
wname
— ВейвлетВейвлет в виде вектора символов или строкового скаляра. Смотрите wavefun
для получения дополнительной информации.
delta
— Выборка периода
(значение по умолчанию) | положительный скаляр с действительным знакомВыборка периода в виде скаляра с действительным знаком.
Пример: pf = scal2frq([1:5],"db4",0.01)
Существует только аппроксимированный ответ для отношения между шкалой и частотой.
В анализе вейвлета способ связать шкалу с частотой состоит в том, чтобы определить центральную частоту вейвлета, Fc, и использовать следующее отношение:
где
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.
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.