Расширение вектора или матрицы
также задает местоположение внутреннего абонента.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
вектор, когда значения находятся на или вблизи пределов области значений типа данных.
Симметричные расширения
Наименьший 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
данные, когда значения находятся на или вблизи пределов области значений типа данных.
Симметричные расширения
Наименьший int8
целое число равно , а самая большая - 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
копия вектора, а затем получите антисимметричное расширение копии с целой точкой. Расширение включает отрицательные значения меньше, чем и значения, превышающие 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
целое число, которое является для значений меньше чем и 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'
| '1d'
| '1D'
| 2 | '2'
| '2d'
| '2D'
| 'ar'
| 'addrow'
| 'ac'
| 'addcol'
Метод расширения, используемый на входе, задается как одно из значений, перечисленных здесь.
TYPE | Описание |
---|---|
1 , '1' , '1d' , или '1D' |
1-D внутренний номер |
2 , '2' , '2d' , или '2D' |
2-D внутренний номер |
'ar' или 'addrow' |
Добавить строки |
'ac' или 'addcol' |
Добавление столбцов |
Типы данных: double
| char
MODE
- Специфическое расширение'zpd'
| 'sp0'
| 'spd'
| 'sp1'
| 'sym'
| 'symh'
| 'symw'
| 'asym'
| 'asymh'
| 'asymw'
| 'ppd'
| 'per'
Конкретный метод расширения для расширения входа, заданный как одно из значений, перечисленных здесь. Для получения дополнительной информации см. dwtmode
.
MODE |
Описание |
---|---|
'zpd' |
Нулевой внутренний номер |
'sp0' |
Сглаживайте расширение порядка 0 |
'spd' (или 'sp1' ) |
Сглаживайте расширение порядка 1 |
'sym' или 'symh' |
Симметричное заполнение (половина точки): граничное значение симметричной репликации |
'symw' |
Симметричное заполнение (вся точка): граничное значение симметричной репликации |
'asym' или 'asymh' |
Антисимметричное заполнение (половина точки): краевое значение антисимметричной репликации |
'asymw' |
Антисимметричное заполнение (вся точка): краевое значение антисимметричной репликации |
'ppd' |
Периодическое расширение (1) |
'per' | Периодическое расширение (2) Если длина сигнала нечетная, |
Для получения дополнительной информации о симметричных режимах расширения см. [1].
Примечание
Режимы расширения 'sp0'
и 'spd'
(или 'sp1'
) приведите данные внутренне к двойной точности перед выполнением расширения. Для целочисленных типов данных, wextend
предупреждает, если происходит одно из следующих.
Преобразование в double вызывает потерю точности.
Запрашиваемое расширение приводит к целым числам, выходящим за пределы области значений, где числа двойной точности могут точно представлять последовательные целые числа.
Типы данных: char
X
- Входные данныеВходные данные, заданные как действительный вектор или матрица.
Типы данных: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
LEN
- Длина удлиненияДлина расширения, заданная как неотрицательное целое или двухэлементный вектор неотрицательных целых чисел. Можно расширить матрицу, выразив LEN
как [LROW,LCOL]
, где LROW
количество строк, которые нужно добавить и LCOL
количество столбцов в add.Вы можете выполнить 2-D расширение матрицы на одинаковое количество в обоих направлениях путем определения LEN
как одно целое число.
Расширение длины 0 эквивалентно нулевому расширению.
Пример: wextend('2D','sym',[1 2 3 4;5 6 7 8],[2 0])
расширяет только две строки вверх и две строки вниз.
LOC
- Расположение удлинителя'l'
| 'u'
| 'r'
| 'd'
| 'b'
| 'n'
| двухсимвольный массивМестоположение внутреннего абонента, заданное как один или пара следующих:
'l'
- Продление налево
'u'
- Расширение вверх
'r'
- Право на расширение
'd'
- Расширение вниз
'b'
- удлинение с обеих сторон
'n'
- Пустой внутренний номер
Допустимые и значения по умолчанию для LOC
, и поведение LEN
, зависят от заданного TYPE
.
НАПЕЧАТАТЬ | МЕСТОПОЛОЖЕНИЕ |
---|---|
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 являются 1-D местоположениями внутренних линий или '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] Странг, Г. и Т. Нгуен. Вейвлеты и банки фильтров. Wellesley, MA: Wellesley-Cambridge Press, 1996.
Указания и ограничения по применению:
Сгенерированный код может вернуть вектор-столбец, когда MATLAB® возвращает вектор-строку, если все из следующих условий равны true:
TYPE
задает расширение 1-D.
Входные X
является вектором переменного размера.
Входные X
не является вектор-строка переменной длины (1-by-:).
Генерация кода не выдает предупреждение или сообщение об ошибке о несоответствии формы. В векторе выхода, который возвращает сгенерированный код, значения совпадают со значениями в векторе выхода, который возвращает MATLAB.
В этом случае, чтобы сгенерировать код, который возвращает вектор-строку, передайте X(:).'
вместо X
.
Входные X
должен иметь тип double
.
Указания и ограничения по применению:
Только 'sym'
и 'per'
поддерживаются режимы расширения.
Поддерживается только один синтаксис YEXT = wextend(TYPE,MODE,X,LEN)
.
The LOC
входной параметр не поддерживается.
Для одномерных расширений - расположение по умолчанию 'b'
используется. Для двумерных расширений, расположение по умолчанию 'bb'
используется.
Поддерживаются только расширения в одной размерности.
The LEN
входной параметр должен иметь длину, равную единице.
Для одномерных расширений единственными поддерживаемыми методами расширения являются: 1, '1'
, '1d'
, и '1D'
.
Для двумерных расширений единственными поддерживаемыми методами расширения являются: 'addrow'
, и 'addcol'
.
У вас есть измененная версия этого примера. Вы хотите открыть этот пример с вашими правками?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.