Шкала до частоты
Этот пример показывает, как изменяется псевдочастота, когда вы удваиваете шкалу.
Создайте вектор шкал с 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))
Преобразуйте шкалы в псевдочастоты для действительного вейвлета Морле. Сначала примите, что период дискретизации равен 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
- Период отбора проб1
(по умолчанию) | положительный скаляр с реальным значениемПериод дискретизации, заданный как действительный скаляр.
Пример: pf = scal2frq([1:5],"db4",0.01)
Существует только приблизительный ответ на отношение между шкалой и частотой.
В вейвлет-анализе способ связать шкалу с частотой - это определить центральную частоту вейвлета, Fc и использовать следующую зависимость:
где
a является шкалой.
Fc - центральная частота вейвлета в Гц.
Fa - псевдочастота, соответствующая a шкалы, в Гц.
Идея состоит в том, чтобы связать с заданным вейвлетом чисто периодический сигнал частотного Fc. Частота, максимизирующая преобразование Фурье модуля вейвлета, Fc. centfrq
функция вычисляет центральную частоту для заданного вейвлета. Из вышеописанного отношения видно, что шкала обратно пропорциональна псевдочастоте. Для примера, если шкала увеличивается, вейвлет становится более распределенным, получая более низкую псевдочастоту.
Некоторые примеры соответствия между центральной частотой и вейвлетом показаны на следующем рисунке.
Центральные частоты для реальных и сложных вейвлетов
[1] Abry, P. Ondelettes et turbulence. Multirésolutions, алгоритмы декомпозиции, инвариация d 'échelles et signaux de pression. Diderot, Editeurs des sciences et des arts, Paris, 1997.
У вас есть измененная версия этого примера. Вы хотите открыть этот пример с вашими правками?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.