Удлинить вектор или матрицу
также указывает местоположение внутреннего абонента.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
Выполнение периодического расширения. Поскольку входной вектор имеет нечетную длину, перед расширением с использованием режима «ppd» wextend добавляет к концу дополнительный пример. Этот образец равен последнему значению справа.
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 предупреждает, если происходит одно из следующих действий.
Преобразование в двойное приводит к потере точности.
Запрошенное расширение приводит к появлению целых чисел за пределами диапазона, где числа с двойной точностью могут точно представлять последовательные целые числа.
Типы данных: char
X - Входные данныеВходные данные, заданные как действительный вектор или матрица.
Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64
LEN - Длина удлиненияДлина расширения, заданная как неотрицательное целое число или двухэлементный вектор неотрицательных целых чисел. Можно расширить матрицу, выразив LEN как [LROW,LCOL], где LROW - количество добавляемых строк и LCOL - количество добавляемых столбцов. Можно выполнить 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' - Расширение NULL
Допустимые значения и значения по умолчанию для 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] Странг, G. и Т. Нгуен. Вейвлеты и банки фильтров. Уэлсли, Массачусетс: Уэлсли-Кембридж Пресс, 1996.
Примечания и ограничения по использованию:
Сгенерированный код может возвращать вектор столбца, когда MATLAB ® возвращает вектор строки, если все следующие условия выполнены:
TYPE задает расширение 1-D.
Вход X является вектором переменного размера.
Вход X не является вектором строки переменной длины (1-by-:).
Создание кода не приводит к появлению предупреждения или сообщения об ошибке о несоответствии формы. В векторе вывода, который возвращает сгенерированный код, значения соответствуют значениям в векторе вывода, которые возвращает MATLAB.
В этом случае для генерации кода, возвращающего вектор строки, передайте X(:).' вместо X.
Вход X должен иметь тип double.
Примечания и ограничения по использованию:
Только 'sym' и 'per' поддерживаются режимы расширения.
Поддерживается только синтаксис YEXT = wextend(TYPE,MODE,X,LEN).
LOC входной аргумент не поддерживается.
Для одномерных расширений расположение по умолчанию 'b' используется. Для двумерных расширений расположение по умолчанию 'bb' используется.
Поддерживаются только расширения в одном измерении.
LEN входной аргумент должен иметь длину, равную единице.
Для одномерных расширений поддерживаются только следующие методы расширения: 1, '1', '1d', и '1D'.
Для двумерных расширений поддерживаются только следующие методы расширения: 'addrow', и 'addcol'.
Имеется измененная версия этого примера. Открыть этот пример с помощью изменений?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.