Matlab中cat函数的用法
发布日期:2021-05-07 17:47:58 浏览次数:31 分类:技术文章

本文共 2738 字,大约阅读时间需要 9 分钟。

目录


cat串联数组。

语法

C = cat(dim,A,B)C = cat(dim,A1,A2,…,An)

说明

当 A 和 B 具有兼容的大小(除运算维度 dim 以外的维度长度匹配)时,C = cat(dim,A,B) 沿维度 dim 将B串联到A的末尾。

C = cat(dim,A1,A2,...,An) 沿维度dim串联A1A2、…、An

可以使用方括号运算符[]进行串联。例如,[A,B][A B]将水平串联数组AB,而[A; B]将垂直串联它们。

示例

两个矩阵

创建两个矩阵,先垂直串联这两个矩阵,然后再水平串联。

A = ones(3)A = 3×3     1     1     1     1     1     1     1     1     1B = zeros(3)B = 3×3     0     0     0     0     0     0     0     0     0C1 = cat(1,A,B)C1 = 6×3     1     1     1     1     1     1     1     1     1     0     0     0     0     0     0     0     0     0C2 = cat(2,A,B)C2 = 3×6     1     1     1     0     0     0     1     1     1     0     0     0     1     1     1     0     0     0

三维数组

创建两个三维数组,并沿第三个维度串联它们。所得数组中第一个和第二个维度的长度与输入数组中对应的长度匹配,而第三个维度会扩展。

A = rand(2,3,4);B = rand(2,3,5);C = cat(3,A,B);szC = size(C)szC = 1×3     2     3     9

扩展表

创建一个表并使用元胞数组添加一个行。

LastName = {'Sanchez';'Johnson';'Li';'Diaz'};Age = [38;43;38;40];T1 = table(LastName,Age)T1=4×2 table     LastName      Age    ___________    ___    {'Sanchez'}    38     {'Johnson'}    43     {'Li'     }    38     {'Diaz'   }    40 Trow = {'Brown',49};T2 = cat(1,T1,Trow)T2=5×2 table     LastName      Age    ___________    ___    {'Sanchez'}    38     {'Johnson'}    43     {'Li'     }    38     {'Diaz'   }    40     {'Brown'  }    49

具有不同类型的日期

将日期字符向量、字符串日期和日期时间串联成一个日期列。结果为一个日期时间向量。

chardate = '2016-03-24';strdate = "2016-04-19";t = datetime('2016-05-10','InputFormat','yyyy-MM-dd');C = cat(1,chardate,strdate,t)C = 3x1 datetime   24-Mar-2016   19-Apr-2016   10-May-2016

元胞数组中的矩阵

创建一个包含两个矩阵的元胞数组,并分别以垂直方式和水平方式串联这两个矩阵。

M1 = [1 2; 3 4];M2 = [5 6; 7 8];A1 = {M1,M2};Cvert = cat(1,A1{:})Cvert = 4×2     1     2     3     4     5     6     7     8Chorz = cat(2,A1{:})Chorz = 2×4     1     2     5     6     3     4     7     8

输入参数

dim - 沿其运算的维度

正整数标量

沿其运算的维度,指定为正整数标量。例如,如果AB均为2×2矩阵,则 cat(1,A,B) 将垂直串联成一个 4×2 矩阵。cat(2,A,B) 将水平串联成一个 2×4 矩阵。

对于表或时间表输入,dim 必须为 1 或 2。

A - 第一个输入

标量 | 向量 | 矩阵 | 多维数组 | 表 | 时间表

第一个输入,指定为标量、向量、矩阵、多维数组、表或时间表。

B - 第二个输入

标量 | 向量 | 矩阵 | 多维数组 | 表 | 时间表

第二个输入,指定为标量、向量、矩阵、多维数组、表或时间表。

  • B 的元素沿运算维度串联到第一个输入的末尾。输入参数的大小必须兼容。例如,如果第一个输入是大小为 3×2 的矩阵,则B必须有 2 列才可进行垂直串联,必须有3行才可进行水平串联。

  • 水平串联时,所有表输入都必须有唯一的变量名称。如果有行名称,则它们必须完全相同(顺序除外)。同样,所有时间表输入必须具有相同的行时间,所有列必须具有不同的名称。

  • 可以串联不同类型的有效组合。可以参考不同类的有效合并

A1,A2,…,An - 输入列表

逗号分隔的列表

输入列表,指定为以逗号分隔的一系列数组,这些数组按列表中的指定顺序串联。

  • 输入必须具有兼容的大小。例如,如果 A1 是长度为 m 的行向量,则其余输入必须各有 m 列才可进行垂直串联。

  • 水平串联时,所有表输入都必须有唯一的变量名称。如果有行名称,则它们必须完全相同(顺序除外)。同样,所有时间表输入必须具有相同的行时间,所有列必须具有不同的名称。

  • 可以串联不同类型的有效组合。可以参考不同类的有效合并

提示

  • 要通过水平串联字符串、字符向量或字符向量元胞数组来构造文本,可以使用strcat函数。

  • 要从字符向量元胞数组或字符串数组构造一段带分隔符的文本,可以使用strjoin函数。

算法

当将空数组串联到非空数组时,cat会在输出中略去空数组。例如,cat(2,[1 2],[]) 返回行向量 [1 2]

如果所有输入参数均为空且具有兼容的大小,则 cat 返回空数组,其大小等于输入为非空时的输出大小。例如,cat(2,zeros(0,1),zeros(0,2)) 返回 0×3 空数组。

 

 

上一篇:Altera FPGA基本开发流程
下一篇:我们,都一样......(句句入心)

发表评论

最新留言

路过按个爪印,很不错,赞一个!
[***.219.124.196]2025年03月19日 21时41分09秒