wavemngr

Менеджер по вейвлету

Описание

Использование wavemngr чтобы добавить, удалите, восстановите или считайте вейвлеты.

пример

wavemngr('add',FN,FSN,WT,NUMS,FILE) добавляет семейство вейвлетов к тулбоксу. Эти параметры задают семейство вейвлетов:

  • FN — Фамилия

  • FSN — Краткое название семейства

  • WT — Тип семейства вейвлетов

  • NUMS — Параметры вейвлета

  • FILE — Файл определения вейвлета

Примечание

Когда вы используете wavemngr чтобы добавить семейство вейвлетов, три файла расширения вейвлета создаются в текущей папке: эти два ASCII-файла wavelets.asc и wavelets.prv, и MAT-файл wavelets.inf. Если вы добавляете новое семейство вейвлетов, это доступно в этой папке только.

wavemngr('add',FN,FSN,WT,{NUMS,TYPNUMS},FILE) добавляет семейство вейвлетов параметром NUMS с форматом ввода вводят TYPNUMS.

wavemngr(___,B) добавляет семейство вейвлетов, где B задает эффективную поддержку вейвлетов. B входной параметр допустим только для вейвлетов типа WT = 3, 4, и 5. Можно использовать этот синтаксис с любым из предыдущих синтаксисов.

пример

wavemngr('del',WN) удаляет семейство вейвлетов, заданное WN.

пример

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

В этом примере показано, как добавить новые сжато поддерживаемые ортогональные вейвлеты в тулбокс. Эти вейвлеты, которые являются небольшим обобщением вейвлетов Daubechies, основаны на использовании полиномов Бернстайна и происходят из-за Kateb и Lemarié.

Добавьте новое семейство ортогональных вейвлетов. Необходимо задать:

  • Фамилия: 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')

wavelets.asc ASCII-файла сохранено как 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

Figure contains an axes object. The axes object contains 2 objects of type line. These objects represent Scaling Function, Wavelet.

Удалите добавленное семейство.

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

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

свернуть все

Фамилия вейвлета в виде вектора символов или строкового скаляра.

Краткое название семейства вейвлетов в виде вектора символов или строкового скаляра. Количество символов в FSN должно быть меньше чем или равно 4.

Семейство вейвлетов вводит в виде одного из следующего:

  • 1 – Ортогональные вейвлеты

  • 2 – Биоортогональные вейвлеты

  • 3 – Вейвлет с масштабирующейся функцией

  • 4 – Вейвлет без масштабирующейся функции

  • 5 – Комплексный вейвлет без масштабирующейся функции

Параметры вейвлета в виде:

  • Если семейство состоит из одного вейвлета, 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
    dbNUMS = '1 2 3 4 5 6 7 8 9 10 **'
    shanNUMS = '1-1.5 1-1 1-0.5 1-0.1 2-3 **'

Формат ввода параметра вейвлета в виде:

  • 'integer' — Используйте эту опцию, когда параметр будет целым числом. Например, семейство вейвлетов Daubechies db использует целочисленный параметр.

  • 'real' — Используйте эту опцию, когда параметр будет действителен. Например, биоортогональное семейство вейвлетов bior использует действительный параметр.

  • 'charactervector' — Используйте эту опцию, когда параметр будет вектором символов. Например, Шенноновское семейство вейвлетов использует вектор символов.

Файл определения вейвлета в виде вектора символов или строкового скаляра. FILE имя MAT-файла или имя файла кода, которое задает семейство вейвлетов.

Если семейство вейвлетов содержит только один (ортогональный) тип 1 или тип 2 (биоортогональный) вейвлет, можно задать вейвлет в MAT-файле. MAT-файл содержит масштабирующиеся коэффициенты фильтра. Имя файла должно совпадать с кратким названием семейства вейвлетов.

  • Если вы задаете ортогональный вейвлет в MAT-файле, имя переменной, содержащей масштабирующиеся коэффициенты фильтра, должно совпадать с именем краткого названия семейства вейвлетов.

  • Если вы задаете биоортогональный вейвлет в MAT-файле, именами переменных, содержащих масштабирующиеся коэффициенты фильтра, должен быть Df и Rf.

Для получения дополнительной информации смотрите, Добавляет Квадратура Зеркальные и Биоортогональные Фильтры Вейвлета.

Пример: Если у семейства, которое содержит один ортогональный вейвлет, есть краткое название wfsn, переменная wfsn должен содержать масштабирующиеся коэффициенты фильтра. Чтобы создать необходимый MAT-файл, вы использовали бы команду save wfsn wfsn.

Эффективная поддержка вейвлетов с семейством вводит WT равняйтесь 3, 4, или 5 в виде двухэлементного вектора с действительным знаком. Если B = [lb ub], затем lb задает нижнюю границу и ub задает верхнюю границу.

Типы данных: double

Семейство вейвлетов, заданное вектором символов или строковым скаляром WN. Значение WN или фамилия вейвлета или краткое название семейства вейвлетов.

Пример: wavemngr('del','Lemarie')

Ограничения

  • wavemngr позволяет вам добавлять вейвлет. Необходимо проверить, что это - действительно вейвлет. Никакая проверка не выполнена, чтобы подтвердить, что сложение является вейвлетом или подтвердить тип нового вейвлета. Можно использовать dwtfilterbank проверять, является ли вейвлет ортогональным или биоортогональным.

Ссылки

[1] Daubechies, я. Десять лекций по вейвлетам. CBMS-NSF региональный ряд конференции в прикладной математике. Филадельфия, усилитель мощности (УМ): общество промышленной и прикладной математики, 1992.

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