wextend

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

Описание

пример

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'URDB, или 'n'

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

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

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

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

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

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

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

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

LEN количество строк, чтобы добавить.
'ac' или 'addcol''l'URDB, или 'n'

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

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

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

Советы

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

Алгоритмы

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

Ссылки

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

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

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

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