cat
конкатенация нескольких массивов
Синтаксис
y = cat(dim, A1, A2,...,An)
Аргументы
- dim
положительный вещественный скаляр.
- A1,A2,..An
скаляры, векторы, матрицы или гиперматрицы совместимых типов данных, или cell-массивы. A1,A2,...,An должны быть одинакового размера (за исключением номера размерности
dim
).size(A1,i)=size(A2,i)=...=size(An,i)
дляi
, отличных отdim
, аsize(A1,dim), size(A2,dim),..., size(An,dim)
могут различаться.- y
скаляр, вектор, матрица, многомерный cell-массив или многомерный массив структур.
Описание
y=cat(dim,A1,A2,...,An) :
y
является результатом
конкатенации входных аргументов A1, A2,..., An
.
cat(1, A1, A2, A3)
эквивалентно [A1 ; A2 ; A3]
.
cat(2, A1, A2, A3)
эквивалентно [A1 A2 A3]
.
Квадратные скобки работают быстрее и гораздо предпочтительней в обоих случаях.
Когда входные массивы имеют неодинаковый тип данных, то применяются правила автоматического
преобразования, подобные правилам [,]
и [;]
, как
описано на странице [brackets].
cat()
полезна главным образом для dim > 2
, чтобы построить
гиперматрицу или cell-гипермассив.
Примеры
Пример №1: построение вектора вдоль размерности №3
cat(3, 4, -1, 3)
--> cat(3, 4, -1, 3) ans = (:,:,1) 4. (:,:,2) -1. (:,:,3) 3.
Пример №2: Построение матрицы текста размером size(1,3,2):
cat(3, ["a" "aa" "aaa"], ["b" "bb" "bbb"])
--> cat(3, ["a" "aa" "aaa"], ["b" "bb" "bbb"]) ans = (:,:,1) !a aa aaa ! (:,:,2) !b bb bbb !
Пример №3: Упаковка отдельных слоёв R G B в мини-картинку RGB:
R = uint8(grand(2,4,"uin",0,255)) G = uint8(grand(2,4,"uin",0,255)) B = uint8(grand(2,4,"uin",0,255)) cat(3, R, G, B)
--> R = uint8(grand(2,4,"uin",0,255)) R = 142 8 11 234 191 249 252 51 --> G = uint8(grand(2,4,"uin",0,255)) G = 255 246 104 89 152 71 112 17 --> B = uint8(grand(2,4,"uin",0,255)) B = 170 182 39 197 115 108 16 51 --> cat(3, R, G, B) ans = (:,:,1) 142 8 11 234 191 249 252 51 (:,:,2) 255 246 104 89 152 71 112 17 (:,:,3) 170 182 39 197 115 108 16 51
Пример №4: Построение cell-гипермассива:
--> A1 = {%T "abc" ; (1-%z)^2, %pi} A1 = [1x1 boolean ] [1x1 string ] [1x1 polynomial] [1x1 constant] --> A2 = {%s^2, gda(); %F, list(-5, "hello")} A2 = [1x1 polynomial] [1x1 handle] [1x1 boolean ] [ list ] --> cat(3, A1, A2) ans = (:,:,1) [1x1 boolean ] [1x1 string ] [1x1 polynomial] [1x1 constant] (:,:,2) [1x1 polynomial] [1x1 handle] [1x1 boolean ] [ list ]
Смотрите также
- квадратные скобки [..] — Конкатенация. Получатели присвоения. Результаты функции.
- lstcat — конкатенация списков
- permute — переставляет размерности массива
- matrix — изменение вектора или матрицы в матрицу иных размеров
История
Версия | Описание |
2023.1 | Arrays of compatible types accepted, according to [,] and [;] transtyping rules. |
Report an issue | ||
<< Shape tests | Манипуляции с матрицами | circshift >> |