wextend

Расширьте вектор или матрицу

Синтаксис

YEXT= wextend(TYPE,MODE,X,LEN)
YEXT = wextend(___,LOC)

Описание

пример

YEXT= wextend(TYPE,MODE,X,LEN) расширяет входной вектор с действительным знаком или матричный X длиной LEN, с помощью метода TYPE и расширения MODE. TYPE задает размерность расширения. MODE задает правило применяться, чтобы заполнить значения в расширении.

YEXT = wextend(___,LOC) также задает местоположение расширения.

Примеры

свернуть все

Расширьте вектор

Расширьте вектор с помощью многих различных методов.

Создайте вектор и установите дополнительную длину на 2.

len = 2;
x = [1 2 3]
x = 1×3

     1     2     3

Выполните расширение нулевой клавиатуры. Чтобы проверить, что различные формы входных параметров возможны, выполните это расширение дважды. Результат те же оба раза.

xextzpd1 = wextend('1','zpd',x,len)
xextzpd1 = 1×7

     0     0     1     2     3     0     0

xextzpd2 = wextend('1D','zpd',x,len,'b')
xextzpd2 = 1×7

     0     0     1     2     3     0     0

Выполните полуточку симметричное расширение.

xextsym = wextend('1D','sym',x,len)
xextsym = 1×7

     2     1     1     2     3     3     2

Выполните периодическое расширение. Поскольку входной вектор имеет нечетную длину, wextend добавляет дополнительный пример в конец прежде, чем расширить использование режима 'PPD'. Эта выборка равна последнему значению справа.

xextper = wextend('1D','per',x,len)
xextper = 1×8

     3     3     1     2     3     3     1     2

Расширьте матрицу

Расширьте небольшую матрицу с помощью многих различных методов.

Создайте матрицу и установите дополнительную длину на 2.

len = 2;
X = [1 2 3; 4 5 6]
X = 2×3

     1     2     3
     4     5     6

Выполните расширение нулевой клавиатуры массива.

Xextzpd = wextend(2,'zpd',X,len)
Xextzpd = 6×7

     0     0     0     0     0     0     0
     0     0     0     0     0     0     0
     0     0     1     2     3     0     0
     0     0     4     5     6     0     0
     0     0     0     0     0     0     0
     0     0     0     0     0     0     0

Выполните полуточку симметричное расширение массива.

Xextsym = wextend('2D','sym',X,len)
Xextsym = 6×7

     5     4     4     5     6     6     5
     2     1     1     2     3     3     2
     2     1     1     2     3     3     2
     5     4     4     5     6     6     5
     5     4     4     5     6     6     5
     2     1     1     2     3     3     2

Наблюдайте эффекты симметричных, антисимметричных, и сглаживайте расширения на векторе uint8, когда значения будут в или около пределов области значений типа данных.

Симметричные расширения

Самое маленькое целое число uint8 0, и самое большое 255. Создайте вектор целых чисел uint8, который включает те пределы.

dataVector = uint8([0 1 2 253 254 255])
dataVector = 1x6 uint8 row vector

     0     1     2   253   254   255

Получите самое главное и полуукажите симметричные расширения вектора. Расширьте вектор двумя значениями слева и правом.

wholePointSym = wextend('1','symw',dataVector,2)
wholePointSym = 1x10 uint8 row vector

     2     1     0     1     2   253   254   255   254   253

halfPointSym = wextend('1','symh',dataVector,2)
halfPointSym = 1x10 uint8 row vector

     1     0     0     1     2   253   254   255   255   254

Расширение симметрично никогда не приводит к значениям вне области значений uint8.

Антисимметричные расширения

Создайте тип копия double вектора, и затем получите самое главное антисимметричное расширение копии. Расширение включает отрицательные величины и значения, больше, чем 255.

dataVectorDouble = double(dataVector);
wholePointAsymDouble = wextend('1','asymw',dataVectorDouble,2)
wholePointAsymDouble = 1×10

    -2    -1     0     1     2   253   254   255   256   257

Получите самое главное антисимметричное расширение исходного вектора uint8. Значения вне области значений uint8 сопоставлены с самым близким целым числом uint8, которое является 0 для отрицательных величин и 255 для значений, больше, чем 255.

wholePointAsym = wextend('1','asymw',dataVector,2)
wholePointAsym = 1x10 uint8 row vector

     0     0     0     1     2   253   254   255   255   255

Теперь получите полуточку антисимметричные расширения копии double и исходного вектора uint8.

halfPointAsymDouble = wextend('1','asymh',dataVectorDouble,2)
halfPointAsymDouble = 1×10

    -1     0     0     1     2   253   254   255  -255  -254

halfPointAsym = wextend('1','asymh',dataVector,2)
halfPointAsym = 1x10 uint8 row vector

     0     0     0     1     2   253   254   255     0     0

Как с самым главным антисимметричное расширение, отрицательные величины в расширенных данных uint8 сопоставлены с 0.

Сглаженные расширения

Получите порядок 0 сглаженные расширения копии double и исходного вектора uint8.

smooth0Double = wextend('1','sp0',dataVectorDouble,2)
smooth0Double = 1×10

     0     0     0     1     2   253   254   255   255   255

smooth0 = wextend('1','sp0',dataVector,2)
smooth0 = 1x10 uint8 row vector

     0     0     0     1     2   253   254   255   255   255

Результаты идентичны. Затем, получите сглаженное расширение порядка 1 каждого вектора.

smooth1Double = wextend('1','sp1',dataVectorDouble,2)
smooth1Double = 1×10

    -2    -1     0     1     2   253   254   255   256   257

smooth1 = wextend('1','sp1',dataVector,2)
smooth1 = 1x10 uint8 row vector

     0     0     0     1     2   253   254   255   255   255

Значения в результате double, которые являются вне области значений uint8, сопоставлены с самыми близкими значениями uint8 в расширении uint8.

Наблюдайте эффекты симметричных, антисимметричных, и сглаживайте расширения данных int8, когда значения будут в или около пределов области значений типа данных.

Симметричные расширения

Самое маленькое целое число int8 -128, и самое большое равняется 127. Создайте вектор целых чисел int8, который включает те пределы.

dataVector = int8([-128 -127 -126 125 126 127])
dataVector = 1x6 int8 row vector

   -128   -127   -126    125    126    127

Получите самое главное и полуукажите симметричные расширения данных. Расширьте вектор двумя значениями слева и правом.

wholePointSym = wextend('1','symw',dataVector,2)
wholePointSym = 1x10 int8 row vector

   -126   -127   -128   -127   -126    125    126    127    126    125

halfPointSym = wextend('1','symh',dataVector,2)
halfPointSym = 1x10 int8 row vector

   -127   -128   -128   -127   -126    125    126    127    127    126

Расширение симметрично никогда не приводит к значениям вне области значений int8.

Антисимметричные расширения

Создайте тип копия double вектора, и затем получите самое главное антисимметричное расширение копии. Расширение включает отрицательные величины меньше, чем -128 и значения, больше, чем 127.

dataVectorDouble = double(dataVector);
wholePointsAsymDouble = wextend('1','asymw',dataVectorDouble,2)
wholePointsAsymDouble = 1×10

  -130  -129  -128  -127  -126   125   126   127   128   129

Получите самое главное антисимметричное расширение исходного вектора int8. Значения вне области значений int8 сопоставлены с самым близким целым числом int8, которое является -128 для значений меньше, чем -128 и 127 для значений, больше, чем 127.

wholePointAsym = wextend('1','asymw',dataVector,2)
wholePointAsym = 1x10 int8 row vector

   -128   -128   -128   -127   -126    125    126    127    127    127

Теперь получите полуточку антисимметричные расширения копии double и исходного вектора int8.

halfPointAsymDouble = wextend('1','asymh',dataVectorDouble,2)
halfPointAsymDouble = 1×10

   127   128  -128  -127  -126   125   126   127  -127  -126

halfPointAsym = wextend('1','asymh',dataVector,2)
halfPointAsym = 1x10 int8 row vector

    127    127   -128   -127   -126    125    126    127   -127   -126

В результате double первое значение равняется 127, который может быть представлен как целое число int8. Второе значение равняется 128, который не может быть представлен как целое число int8. Поэтому в результате int8, это сопоставляется с 127. Остающиеся значения в типе результат double могут все быть представлены как целые числа int8.

Сглаженные расширения

Получите порядок 0 сглаженные расширения копии double и исходного вектора int8.

smooth0Double = wextend('1','sp0',dataVectorDouble,2)
smooth0Double = 1×10

  -128  -128  -128  -127  -126   125   126   127   127   127

smooth0 = wextend('1','sp0',dataVector,2)
smooth0 = 1x10 int8 row vector

   -128   -128   -128   -127   -126    125    126    127    127    127

Результаты идентичны. Теперь получите сглаженное расширение порядка 1 каждого вектора.

smooth1Double = wextend('1','sp1',dataVectorDouble,2)
smooth1Double = 1×10

  -130  -129  -128  -127  -126   125   126   127   128   129

smooth1 = wextend('1','sp1',dataVector,2)
smooth1 = 1x10 int8 row vector

   -128   -128   -128   -127   -126    125    126    127    127    127

Значения в результате double вне области значений int8 сопоставлены с самыми близкими значениями int8 в расширении int8.

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

свернуть все

Дополнительный метод используется на входе, заданном как одно из значений, перечисленных здесь.

TYPEОписание
1'1''1d' или '1D'

1D расширение

2'2''2d' или '2D'

2D расширение

'ar' или 'addrow'

Добавьте строки

'ac' или 'addcol'

Добавьте столбцы

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

Определенный дополнительный метод, чтобы использовать, чтобы расширить вход, заданный как одно из значений, перечисленных здесь.

MODE

Описание

'zpd'

Дополнение нулями

'sp0'

Сглаживайте расширение порядка 0

'spd' (or 'sp1')

Сглаживайте расширение порядка 1

'sym' или 'symh'

Симметричное дополнение (половина точки): граничное значение симметричная репликация

'symw'

Симметричное дополнение (самое главное): граничное значение симметричная репликация

'asym' или 'asymh'

Антисимметричное дополнение (половина точки): граничное значение антисимметричная репликация

'asymw'

Антисимметричное дополнение (самое главное): граничное значение антисимметричная репликация

'ppd'

Расширение Periodized (1)

'per'

Расширение Periodized (2)

Если длина сигнала нечетна, wextend добавляет справа копию последнего значения и выполняет расширение с помощью режима 'ppd'. В противном случае 'per' уменьшает до 'ppd'. Это правило также применяется к изображениям.

Для получения дополнительной информации о симметричных дополнительных режимах см. [1].

Примечание

Дополнительные режимы 'sp0' и 'spd' (или 'sp1') бросают данные внутренне к двойной точности прежде, чем выполнить расширение. Для целочисленных типов данных wextend предупреждает, если одно из следующего происходит.

  • Преобразование, чтобы удвоиться вызывает потерю точности.

  • Требуемое расширение приводит к целым числам вне области значений, где числа двойной точности могут представлять последовательные целые числа точно.

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

Входные данные, заданные как вектор с действительным знаком или матрица.

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

Продолжительность расширения, заданного как неотрицательный целочисленный или двухэлементный вектор неотрицательных целых чисел. Можно расширить матрицу путем выражения LEN как [LROW,LCOL], где LROW является количеством строк, чтобы добавить, и LCOL является количеством столбцов, чтобы добавить. Можно выполнить 2D расширение матрицы той же суммой в обоих направлениях путем определения LEN как одного целого числа.

Расширение длины 0 эквивалентно пустому расширению.

Пример: wextend('2D','sym',[1 2 3 4;5 6 7 8],[2 0]) расширяет только две строки и две строки вниз.

Местоположение расширения, заданного как один или пара следующего:

  • L Расширение оставлено

  • U Расширение

  • R Дополнительное право

  • D Расширение вниз

  • B Расширение с обеих сторон

  • N Пустое расширение

Допустимое и значения по умолчанию для LOC и поведение LEN, зависят от заданного TYPE.

ВводLOC
1, '1', 1d' или '1D''l', 'u', 'r', 'd', 'b' или 'n'

Пример: wextend('1D','zpd',X,3,'r') расширяет входной вектор X три элемента направо.

Значение по умолчанию: 'b'

LEN является продолжительностью расширения.
2, '2', '2d' или '2D' [LOCROW,LOCCOL], где LOCROW и LOCCOL являются 1D дополнительными местоположениями или 'n' (ни один).

Пример: wextend('2D','zpd',X,[2 3],'ub') расширяет входной вектор или матричный X две строки и три столбца с обеих сторон.

Значение по умолчанию: 'bb'

LEN, заданный как [LROW,LCOL], является количеством строк и столбцов, чтобы добавить.
'ar' или 'addrow''l', 'u', 'r', 'd', 'b' или 'n'

Пример: wextend('addrow','zpd',X,4,'d') расширяет входной вектор или матричный X четыре строки вниз.

Значение по умолчанию: 'b'

LEN является количеством строк, чтобы добавить.
'ac' или 'addcol''l', 'u', 'r', 'd', 'b' или 'n'

Пример: wextend('addcol','zpd',X,1,'l') расширяет входной вектор или матричный X один столбец налево.

Значение по умолчанию: 'b'

LEN является количеством столбцов, чтобы добавить.

Советы

Для большинства приложений вейвлета хорошо работает или периодическое дополнительное или симметричное расширение.

Алгоритмы

Когда значение вне области значений типа входных данных, wextend сопоставляет его с самым близким значением типа входных данных. Для примеров данных, расширяемых вне области значений типа данных, смотрите, Расширяют uint8 Данные Вне Пределов Области значений и Расширяют int8 Данные Вне Пределов Области значений.

Ссылки

[1] Странг, G. и Т. Нгуен. Вейвлеты и наборы фильтров. Веллесли, MA: Wellesley-Кембриджское нажатие, 1996.

Расширенные возможности

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

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