Вейвлет-менеджер
Использовать wavemngr добавление, удаление, восстановление или считывание вейвлетов.
wavemngr('add', добавляет семейство вейвлетов на панель инструментов. Семейство вейвлетов определяется следующими параметрами:FN,FSN,WT,NUMS,FILE)
FN - Фамилия в семье
FSN - Краткое имя семьи
WT - Тип семейства вейвлет
NUMS - Вейвлет-параметры
FILE - Файл определения вейвлета
Примечание
При использовании wavemngr для добавления семейства вейвлетов в текущей папке создаются три файла расширения вейвлетов: два файла ASCII wavelets.asc и wavelets.prvи MAT-файл wavelets.inf. При добавлении нового семейства вейвлетов оно доступно только в этой папке.
wavemngr('restore') восстанавливает предыдущее wavelets.asc ASCII-файл
wavemngr('restore',IN2) восстанавливает исходное wavelets.asc ASCII-файл. Здесь IN2 это фиктивный аргумент.
возвращает все имена семейства вейвлетов в массиве символов.out = wavemngr('read')
возвращает все имена вейвлетов в символьном массиве. Здесь out = wavemngr('read',IN2)IN2 это фиктивный аргумент.
считывает out = wavemngr('read_asc')wavelets.asc ASCII-файл и возвращает всю вейвлет-информацию.
Перечислите семейства вейвлетов, доступные по умолчанию.
wavemngr('read')ans = 18x35 char array
'==================================='
'Haar ->->haar '
'Daubechies ->->db '
'Symlets ->->sym '
'Coiflets ->->coif '
'BiorSplines ->->bior '
'ReverseBior ->->rbio '
'Meyer ->->meyr '
'DMeyer ->->dmey '
'Gaussian ->->gaus '
'Mexican_hat ->->mexh '
'Morlet ->->morl '
'Complex Gaussian ->->cgau '
'Shannon ->->shan '
'Frequency B-Spline->->fbsp '
'Complex Morlet ->->cmor '
'Fejer-Korovkin ->->fk '
'==================================='
Перечислите все вейвлеты.
wavemngr('read',1)ans = 71x44 char array
'=================================== '
'Haar ->->haar '
'=================================== '
'Daubechies ->->db '
'------------------------------ '
'db1->db2->db3->db4-> '
'db5->db6->db7->db8-> '
'db9->db10->db**-> '
'=================================== '
'Symlets ->->sym '
'------------------------------ '
'sym2->sym3->sym4->sym5-> '
'sym6->sym7->sym8->sym**-> '
'=================================== '
'Coiflets ->->coif '
'------------------------------ '
'coif1->coif2->coif3->coif4-> '
'coif5-> '
'=================================== '
'BiorSplines ->->bior '
'------------------------------ '
'bior1.1->bior1.3->bior1.5->bior2.2-> '
'bior2.4->bior2.6->bior2.8->bior3.1-> '
'bior3.3->bior3.5->bior3.7->bior3.9-> '
'bior4.4->bior5.5->bior6.8-> '
'=================================== '
'ReverseBior ->->rbio '
'------------------------------ '
'rbio1.1->rbio1.3->rbio1.5->rbio2.2-> '
'rbio2.4->rbio2.6->rbio2.8->rbio3.1-> '
'rbio3.3->rbio3.5->rbio3.7->rbio3.9-> '
'rbio4.4->rbio5.5->rbio6.8-> '
'=================================== '
'Meyer ->->meyr '
'=================================== '
'DMeyer ->->dmey '
'=================================== '
'Gaussian ->->gaus '
'------------------------------ '
'gaus1->gaus2->gaus3->gaus4-> '
'gaus5->gaus6->gaus7->gaus8-> '
'=================================== '
'Mexican_hat ->->mexh '
'=================================== '
'Morlet ->->morl '
'=================================== '
'Complex Gaussian ->->cgau '
'------------------------------ '
'cgau1->cgau2->cgau3->cgau4-> '
'cgau5->cgau6->cgau7->cgau8-> '
'=================================== '
'Shannon ->->shan '
'------------------------------ '
'shan1-1.5->shan1-1->shan1-0.5->shan1-0.1-> '
'shan2-3->shan**-> '
'=================================== '
'Frequency B-Spline->->fbsp '
'------------------------------ '
'fbsp1-1-1.5->fbsp1-1-1->fbsp1-1-0.5->fbsp2-1-1->'
'fbsp2-1-0.5->fbsp2-1-0.1->fbsp**-> '
'=================================== '
'Complex Morlet ->->cmor '
'------------------------------ '
'cmor1-1.5->cmor1-1->cmor1-0.5->cmor1-1-> '
'cmor1-0.5->cmor1-0.1->cmor**-> '
'=================================== '
'Fejer-Korovkin ->->fk '
'------------------------------ '
'fk4->fk6->fk8->fk14-> '
'fk18->fk22-> '
'=================================== '
В этом примере показано, как добавить новые компактно поддерживаемые ортогональные вейвлеты на панель инструментов. Эти вейвлеты, являющиеся небольшим обобщением вейвлетов Даубехия, основаны на использовании многочленов Бернштейна и обусловлены Катебом и Лемари.
Добавьте новое семейство ортогональных вейвлетов. Необходимо определить:
Имя семейства: Lemarie
Краткое имя семейства: lem
Тип вейвлета: 1 (orth)
Номера вейвлетов: 1 2 3 4 5
Файловый драйвер: lemwavf
Исходный код для lemwavf.m предоставляется в конце примера. Входной аргумент lemwavf - символьный вектор формы lemN, где N = 1, 2, 3, 4 или 5.
wavemngr('add','Lemarie','lem',1,'1 2 3 4 5','lemwavf')
Файл ASCII wavelets.asc сохраняется как wavelets.prv, затем информация, определяющая новое семейство, добавляется в wavelets.ascи MAT-файл wavelets.inf генерируется.
Обратите внимание, что wavemngr работает с текущей папкой. При добавлении нового семейства вейвлетов оно доступно только в этой папке.
Перечислите доступные семейства вейвлетов. Подтвердите добавление нового семейства вейвлетов.
wavemngr('read')ans = 19x35 char array
'==================================='
'Haar ->->haar '
'Daubechies ->->db '
'Symlets ->->sym '
'Coiflets ->->coif '
'BiorSplines ->->bior '
'ReverseBior ->->rbio '
'Meyer ->->meyr '
'DMeyer ->->dmey '
'Gaussian ->->gaus '
'Mexican_hat ->->mexh '
'Morlet ->->morl '
'Complex Gaussian ->->cgau '
'Shannon ->->shan '
'Frequency B-Spline->->fbsp '
'Complex Morlet ->->cmor '
'Fejer-Korovkin ->->fk '
'Lemarie ->->lem '
'==================================='
Удалите добавленное семейство. Выполните регенерацию списка семейств вейвлетов.
wavemngr('del','Lemarie') wavemngr('read')
ans = 18x35 char array
'==================================='
'Haar ->->haar '
'Daubechies ->->db '
'Symlets ->->sym '
'Coiflets ->->coif '
'BiorSplines ->->bior '
'ReverseBior ->->rbio '
'Meyer ->->meyr '
'DMeyer ->->dmey '
'Gaussian ->->gaus '
'Mexican_hat ->->mexh '
'Morlet ->->morl '
'Complex Gaussian ->->cgau '
'Shannon ->->shan '
'Frequency B-Spline->->fbsp '
'Complex Morlet ->->cmor '
'Fejer-Korovkin ->->fk '
'==================================='
Восстановление предыдущего файла ASCII wavelets.prv, затем построить MAT-файл wavelets.inf. Перечислите восстановленные вейвлеты. Поскольку wavemngr считывает файл ASCII в текущей рабочей папке, новое семейство появляется в списке.
wavemngr('restore') wavemngr('read',1)
ans = 76x44 char array
'=================================== '
'Haar ->->haar '
'=================================== '
'Daubechies ->->db '
'------------------------------ '
'db1->db2->db3->db4-> '
'db5->db6->db7->db8-> '
'db9->db10->db**-> '
'=================================== '
'Symlets ->->sym '
'------------------------------ '
'sym2->sym3->sym4->sym5-> '
'sym6->sym7->sym8->sym**-> '
'=================================== '
'Coiflets ->->coif '
'------------------------------ '
'coif1->coif2->coif3->coif4-> '
'coif5-> '
'=================================== '
'BiorSplines ->->bior '
'------------------------------ '
'bior1.1->bior1.3->bior1.5->bior2.2-> '
'bior2.4->bior2.6->bior2.8->bior3.1-> '
'bior3.3->bior3.5->bior3.7->bior3.9-> '
'bior4.4->bior5.5->bior6.8-> '
'=================================== '
'ReverseBior ->->rbio '
'------------------------------ '
'rbio1.1->rbio1.3->rbio1.5->rbio2.2-> '
'rbio2.4->rbio2.6->rbio2.8->rbio3.1-> '
'rbio3.3->rbio3.5->rbio3.7->rbio3.9-> '
'rbio4.4->rbio5.5->rbio6.8-> '
'=================================== '
'Meyer ->->meyr '
'=================================== '
'DMeyer ->->dmey '
'=================================== '
'Gaussian ->->gaus '
'------------------------------ '
'gaus1->gaus2->gaus3->gaus4-> '
'gaus5->gaus6->gaus7->gaus8-> '
'=================================== '
'Mexican_hat ->->mexh '
'=================================== '
'Morlet ->->morl '
'=================================== '
'Complex Gaussian ->->cgau '
'------------------------------ '
'cgau1->cgau2->cgau3->cgau4-> '
'cgau5->cgau6->cgau7->cgau8-> '
'=================================== '
'Shannon ->->shan '
'------------------------------ '
'shan1-1.5->shan1-1->shan1-0.5->shan1-0.1-> '
'shan2-3->shan**-> '
'=================================== '
'Frequency B-Spline->->fbsp '
'------------------------------ '
'fbsp1-1-1.5->fbsp1-1-1->fbsp1-1-0.5->fbsp2-1-1->'
'fbsp2-1-0.5->fbsp2-1-0.1->fbsp**-> '
'=================================== '
'Complex Morlet ->->cmor '
'------------------------------ '
'cmor1-1.5->cmor1-1->cmor1-0.5->cmor1-1-> '
'cmor1-0.5->cmor1-0.1->cmor**-> '
'=================================== '
'Fejer-Korovkin ->->fk '
'------------------------------ '
'fk4->fk6->fk8->fk14-> '
'fk18->fk22-> '
'=================================== '
'Lemarie ->->lem '
'------------------------------ '
'lem1->lem2->lem3->lem4-> '
'lem5-> '
'=================================== '
Восстановление начальных вейвлетов. Восстановление исходного файла ASCII wavelets.ini и исходный MAT-файл wavelets.bin. Выполните регенерацию списка семейств вейвлетов. В список не включено новое семейство.
wavemngr('restore',0) wavemngr('read')
ans = 18x35 char array
'==================================='
'Haar ->->haar '
'Daubechies ->->db '
'Symlets ->->sym '
'Coiflets ->->coif '
'BiorSplines ->->bior '
'ReverseBior ->->rbio '
'Meyer ->->meyr '
'DMeyer ->->dmey '
'Gaussian ->->gaus '
'Mexican_hat ->->mexh '
'Morlet ->->morl '
'Complex Gaussian ->->cgau '
'Shannon ->->shan '
'Frequency B-Spline->->fbsp '
'Complex Morlet ->->cmor '
'Fejer-Korovkin ->->fk '
'==================================='
Все возможности командной строки доступны для новых семейств вейвлетов. Создание нового семейства. Вычислите четыре связанных фильтра и масштабные и вейвлет-функции.
wavemngr('add','Lemarie','lem',1,'1 2 3 4 5','lemwavf'); [Lo_D,Hi_D,Lo_R,Hi_R] = wfilters('lem3'); [phi,psi,xval] = wavefun('lem3'); plot(xval,[phi;psi]); legend('Scaling Function','Wavelet') grid on

Удалите добавленное семейство.
wavemngr('del','Lemarie')
lemwavf.m
function F = lemwavf(wname) %LEMWAVF Lemarie wavelet filters. % F = LEMWAVF(W) returns the scaling filter associated with the Lemarie % wavelet specified by the character array, 'lemN'. % Possible values for N are 1, 2, 3, 4 or 5. % % This function is only for use in the "Add Wavelet Families" example. It % may change or be removed in a future release. % % Copyright 2019 The MathWorks, Inc. TFlem = startsWith(wname,'lem'); if ~TFlem error('Wavelet short name is lem followed by filter number'); end fnum = regexp(wname,'(\d+)','match','Once'); if isempty(fnum) error('Specify a filter number as 1,2,3,4,or 5'); end if ~isempty(fnum) num = str2double(fnum); end tffilt = ismember(num,[1 2 3 4 5]); if ~tffilt error('Filter number must be 1, 2, 3, 4, or 5'); end switch num case 1 F = [... 0.46069299844871 0.53391629051346 0.03930700681965 -0.03391629578182 ... ]; case 2 F = [... 0.31555164655258 0.59149765057882 0.20045477817080 -0.10034811856888 ... -0.01528128420694 0.00846362066021 -0.00072514051618 0.00038684732960 ... ]; case 3 F = [... 0.23108942231941 0.56838231367966 0.33173980738190 -0.09447000132310 ... -0.06203683305244 0.02661631105889 -0.00209952890579 0.00001769381066 ... 0.00128429679795 -0.00053703458679 0.00002283826072 -0.00000928544107 ... ]; case 4 F = [... 0.17565337503255 0.52257484913870 0.42429244721660 -0.04601056550580 ... -0.11292720306517 0.03198741803409 0.00813124691980 -0.00743764392677 ... 0.00548090619143 -0.00140066128481 -0.00054200083128 0.00025607264164 ... -0.00008795126642 0.00003025515674 -0.00000082014466 0.00000027569334 ... ]; case 5 F = [... 0.13807658847623 0.47310642622099 0.48217097800239 0.02112933622031 ... -0.15081998732499 0.01935767268926 0.02716532750995 -0.01588522540421 ... 0.00671209165995 0.00120022744496 -0.00321203819186 0.00115266788547 ... -0.00018266213413 -0.00002953360842 0.00008433396295 -0.00002997969339 ... 0.00000534552866 -0.00000159098026 0.00000003069431 -0.00000000895816 ... ]; end
В этом примере показано, как взять фильтры анализа и синтеза, связанные с биоргональным вейвлетом, и сделать их совместимыми с Toolbox™ вейвлета. Vavelet Toolbox требует, чтобы фильтры нижних и верхних частот анализа и синтеза имели одинаковую длину. В этом примере используются почти ортогональные биортогенные вейвлеты, основанные на схеме лапласианской пирамиды Берта и Адельсона (таблица 8.4 на стр. 283 в [1]). В примере также показано, как исследовать свойства биорогональных вейвлетов.
Определите коэффициенты фильтра анализа и синтеза биоргонального вейвлета.
Hd = [-1 5 12 5 -1]/20*sqrt(2); Gd = [3 -15 -73 170 -73 -15 3]/280*sqrt(2); Hr = [-3 -15 73 170 73 -15 -3]/280*sqrt(2); Gr = [-1 -5 12 -5 -1]/20*sqrt(2);
Hd и Gd - фильтры низкочастотного и высокочастотного анализа соответственно. Hr и Gr являются фильтрами синтеза нижних и верхних частот. Все они являются фильтрами с конечной импульсной характеристикой (FIR). Подтвердите сумму коэффициентов фильтра нижних частот sqrt(2) и коэффициенты фильтра верхних частот суммируются до 0.
sum(Hd)/sqrt(2)
ans = 1.0000
sum(Hr)/sqrt(2)
ans = 1.0000
sum(Gd)
ans = -1.0061e-16
sum(Gr)
ans = -9.7145e-17
Z-преобразование КИХ-фильтра является многочленом Лорана ), задаваемым как =∑k=kbkehkz-k. | h | многочлена Лорана | = ke-kb. Поэтому длина равна 1 + | h |. Проверьте расширение Лорана масштабного и вейвлет-фильтров.
PHd = laurpoly(Hd,'dmin',-2)PHd(z) = - 0.07071*z^(+2) + 0.3536*z^(+1) + 0.8485 + 0.3536*z^(-1) - 0.07071*z^(-2)
PHr = laurpoly(Hr,'dmin',-3)
PHr(z) = ...
- 0.01515*z^(+3) - 0.07576*z^(+2) + 0.3687*z^(+1) + 0.8586 + 0.3687*z^(-1) ...
- 0.07576*z^(-2) - 0.01515*z^(-3)
PGd = laurpoly(Gd,'dmin',-3)
PGd(z) = ...
+ 0.01515*z^(+3) - 0.07576*z^(+2) - 0.3687*z^(+1) + 0.8586 - 0.3687*z^(-1) ...
- 0.07576*z^(-2) + 0.01515*z^(-3)
PGr = laurpoly(Gr,'dmin',-2)PGr(z) = - 0.07071*z^(+2) - 0.3536*z^(+1) + 0.8485 - 0.3536*z^(-1) - 0.07071*z^(-2)
Поскольку фильтры связаны с биортогенным вейвлетом, подтвердите PGr (z) = 2.
PHd*PHr + PGd*PGr
ans(z) = 2
Инструментарий вейвлета требует, чтобы фильтры, связанные с вейвлетом, имели одинаковую длину. Чтобы использовать вейвлет-фильтры Лапласа в панели инструментов, необходимо включить отсутствующие мощности ряда Лорана в качестве нулей.
Степени PHd и PHr равны 4 и 6 соответственно. Минимальный фильтр чётной длины, который может вместить четыре фильтра, имеет длину 8, которая соответствует многочлену Лорана степени 7. Стратегия состоит в том, чтобы как можно более равномерно предварять и добавлять 0s так, чтобы все фильтры имели длину 8. Добавить 0 ко всем фильтрам, а затем добавить два 0 к Hd и Gr.
Hd = [0 Hd 0 0]; Gd = [0 Gd]; Hr = [0 Hr]; Gr = [0 Gr 0 0];
Можно изучить свойства биорогональных вейвлетов, создав банки фильтров DWT. Создайте два пользовательских банка фильтров DWT с помощью фильтров: один для анализа, а другой для синтеза. Подтвердите, что банки фильтров являются биорогональными.
fb = dwtfilterbank('Wavelet','Custom',... 'CustomScalingFilter',[Hd' Hr'],... 'CustomWaveletFilter',[Gd' Gr']); fb2 = dwtfilterbank('Wavelet','Custom',... 'CustomScalingFilter',[Hd' Hr'],... 'CustomWaveletFilter',[Gd' Gr'],... 'FilterType','Synthesis'); fprintf('fb: isOrthogonal = %d\tisBiorthogonal = %d\n',... isOrthogonal(fb),isBiorthogonal(fb));
fb: isOrthogonal = 0 isBiorthogonal = 1
fprintf('fb2: isOrthogonal = %d\tisBiorthogonal = %d\n',... isOrthogonal(fb2),isBiorthogonal(fb2));
fb2: isOrthogonal = 0 isBiorthogonal = 1
Постройте график масштабирования и вейвлет-функций, связанных с блоками фильтров в самом крупном масштабе.
[phi,t] = scalingfunctions(fb); [psi,~] = wavelets(fb); [phi2,~] = scalingfunctions(fb2); [psi2,~] = wavelets(fb2); subplot(2,2,1) plot(t,phi(end,:)) grid on title('Scaling Function - Analysis') subplot(2,2,2) plot(t,psi(end,:)) grid on title('Wavelet - Analysis') subplot(2,2,3) plot(t,phi2(end,:)) grid on title('Scaling Function - Synthesis') subplot(2,2,4) plot(t,psi2(end,:)) grid on title('Wavelet - Synthesis')

Вычислите поля кадров банка фильтров.
[analysisLowerBound,analysisUpperBound] = framebounds(fb)
analysisLowerBound = 0.9505
analysisUpperBound = 1.0211
[synthesisLowerBound,synthesisUpperBound] = framebounds(fb2)
synthesisLowerBound = 0.9800
synthesisUpperBound = 1.0528
FN - Имя семейства вейвлетовИмя семейства вейвлетов, указанное как вектор символов или скаляр строки.
FSN - Краткое имя семейства вейвлетовКраткое имя семейства вейвлетов, указанное как вектор символов или скаляр строки. Количество символов в FSN должно быть меньше или равно 4.
WT - Тип семейства вейвлет1 | 2 | 3 | 4 | 5Тип семейства вейвлетов, указанный как один из следующих:
1 - Ортогональные вейвлеты
2 - Биортогенные вейвлеты
3 - Вейвлет с функцией масштабирования
4 - Вейвлет без функции масштабирования
5 - Сложный вейвлет без функции масштабирования
NUMS - Вейвлет-параметры'' | символьный вектор | строковый скалярВейвлет-параметры, указанные как:
Если семейство состоит из одного вейвлета, NUMS - пустая строка ''. Например, mexh и morl каждое семейство содержит один вейвлет.
Если вейвлет является членом конечного семейства вейвлетов, NUMS содержит разделенный пространством список элементов, представляющих вейвлет-параметры. Например, для семейства биорогональных вейвлетов bior, NUMS = '1.1 1.3 1.5 2.2 2.4 2.6 2.8 3.1 3.3 3.5 3.7 3.9 4.4 5.5 6.8'.
Если вейвлет является членом бесконечного семейства вейвлетов, NUMS содержит разделенный пробелом список элементов, представляющих вейвлет-параметры, завершенные специальной последовательностью **. В следующей таблице приведены два примера.
| Семейство вейвлетов | NUMS |
|---|---|
db | NUMS = '1 2 3 4 5 6 7 8 9 10 **' |
shan | NUMS = '1-1.5 1-1 1-0.5 1-0.1 2-3 **' |
TYPNUMS - Формат ввода вейвлет-параметров'integer' (по умолчанию) | 'real' | 'charactervector'Формат ввода вейвлет-параметра, указанный как:
'integer' - используйте этот параметр, если параметр является целым числом. Например, семейство вейвлетов Daubechies db использует целочисленный параметр.
'real' - используйте эту опцию, если параметр является реальным. Например, семейство биорогональных вейвлетов bior использует вещественный параметр.
'charactervector' - используйте эту опцию, если параметр является символьным вектором. Например, семейство вейвлетов Шеннона использует вектор символов.
FILE - Файл определения вейвлетаФайл определения вейвлета, заданный как вектор символа или скаляр строки. FILE имя MAT-файла или кодового файла, определяющего семейство вейвлетов.
B - Эффективная поддержкаЭффективная поддержка вейвлетов с типоразмером семейства WT равно 3, 4 или 5, задается как двухэлементный действительный вектор. Если B = [lb ub], то lb задает нижнюю границу, и ub указывает верхнюю границу.
Типы данных: double
WN - Семейство вейвлетовСемейство вейвлетов, определяемое вектором символов или скаляром строки WN. Значение WN является именем семейства вейвлетов или кратким именем семейства вейвлетов.
Пример: wavemngr('del','Lemarie')
wavemngr позволяет добавить вейвлет. Необходимо убедиться, что это действительно вейвлет. Проверка для подтверждения того, что добавление является вейвлетом или для подтверждения типа нового вейвлета, не выполняется. Вы можете использовать dwtfilterbank чтобы проверить, является ли вейвлет ортогональным или биоргональным.
[1] Daubechies, I. Десять лекций по вейвлетам. Серия региональных конференций CBMS-NSF по прикладной математике. Филадельфия, Пенсильвания: Общество промышленной и прикладной математики, 1992.
Имеется измененная версия этого примера. Открыть этот пример с помощью изменений?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.