matlab 中 size 函数核心作用就是读取数组矩阵多维数组各个维度的尺寸数值,和之前学习的 length 函数不一样,size 函数会把全部维度的大小完整返回,不会只挑选最大维度数值,它是 matlab 编程里面最基础的内置函数,写循环预分配数组判断矩阵行列数切片索引的时候都会高频使用,支持二维矩阵三维张量元胞数组符号数组,调用之后可以一次性拿到全部维度长度,也可以单独提取某一个指定维度的尺寸,很多新手分不清 size 和 length numel 三者区别,经常在循环初始化矩阵的时候选错函数,造成数组维度匹配报错,掌握 size 函数的两种调用形式,还有指定维度参数的写法,是 matlab 矩阵编程的必备基础,这个函数不需要额外工具箱,所有 matlab 版本都自带。
基础语法说明
| 项目 | 内容 |
|---|---|
| 函数名称 | size |
| 第一种调用格式 | sz = size(A) |
| 第二种调用格式 | [m,n] = size(A) |
| 第三种调用格式 | dim_len = size(A,d) |
| 输入 A | 矩阵 向量 多维数组 元胞数组 |
| 输出 sz | 行向量,依次存放每一个维度的长度 |
| 输出 m,n | 分别对应第一维行数 第二维列数 |
| 参数 d | 指定想要读取的维度序号 |
核心运行规则深度讲解
第一种写法 sz = size (A),返回一个行向量,向量里面元素顺序就是维度顺序,二维矩阵返回两个数值,第一个是行数,第二个是列数,三维数组就会返回三个数值,依次是行 列 第三维切片数量。
第二种写法 [m,n] = size (A),专门针对二维矩阵,直接把行数赋值给 m,列数赋值给 n,这种写法代码可读性更高,是二维矩阵代码最常用写法。
第三种写法 dim_len = size (A,d),d 代表维度编号,d 等于 1 就是读取行数,d 等于 2 就是读取列数,d 等于 3 读取第三维的长度,这种写法适合只需要单个维度尺寸的场景,不需要接收全部维度数值。
特殊输入情况,输入是单个标量的时候,size (A) 返回结果是 1 1,代表一行一列,如果是空矩阵,size (A) 会返回对应的 0 值,比如空矩阵是 0 行 5 列,size 就返回 0 5。
需要重点注意维度编号顺序,matlab 维度顺序是第一维是行,第二维是列,第三维是页,这个顺序不能搞反,很多新手会把行列写反,导致索引越界报错。
matlab 中 size 函数的用法操作步骤
第一步 在命令行或者脚本里面准备好待检测的矩阵变量 A。
第二步 根据需求选择调用格式,如果需要全部维度信息,使用 sz = size (A)。
第三步 如果是二维矩阵,想要分开拿到行列,使用 [m,n] = size (A)。
第四步 如果只需要单独某一维长度,添加维度参数 d,写成 size (A,d)。
第五步 拿到尺寸数值之后,用于 for 循环上限,矩阵预分配 zeros (m,n),条件判断维度是否匹配。
第六步 运行代码,查看返回数值,核对行列或者多维维度是否符合预期。
代码示例
二维矩阵 A = rand (4,6),调用 sz = size (A),输出 sz 等于 4 6,调用 [m,n]=size (A),m 等于 4,n 等于 6,调用 size (A,1) 得到 4,size (A,2) 得到 6。
三维数组 A = ones (3,5,2),调用 sz = size (A),输出 3 5 2,代表 3 行 5 列 2 页。
标量 A = 8,size (A) 返回 1 1。
空矩阵 A = [],size (A) 返回 0 0。
易混函数对比表
| 函数 | 返回内容 | 和 size 函数区别 |
|---|---|---|
| size | 全部维度尺寸 | 完整输出每一个维度长度 |
| length | 最长维度的元素个数 | 只返回最大值标量 |
| numel | 数组全部元素总数 | 统计所有元素总和,不区分维度 |
| ndims | 维度总数量 | 统计一共有多少维,不是维度长度 |
进阶使用要点
在矩阵运算里面,如果两个矩阵维度不匹配,就会报维度不一致错误,这个时候优先调用 size 函数核对两个矩阵行列,是调试矩阵乘法点乘拼接代码最常用排查手段。
多维数组处理的时候,不能使用 [m,n] 这种拆分写法,因为维度超过 2,会报错,这种场景必须使用 sz = size (A),再通过索引 sz (1) sz (2) sz (3) 单独提取每一个维度数值。
如果是元胞数组,size 函数统计的是元胞网格的行列页数,不是元胞内部元素个数,这点和 numel 区分开。
总结
matlab 中 size 函数的用法核心就是获取数组各个维度尺寸,有三种调用形式,完整返回维度行向量,拆分输出行列,单独读取指定维度长度,二维矩阵优先使用 [m,n]=size (A),多维数组使用 sz=size (A),需要单独一维就增加维度参数,编程调试矩阵维度错误的时候,size 是首选排查函数,注意区分 size 和 length numel 的功能差异,不要混用。
【常见问题】
问题 1 matlab 中 size 函数的用法里 size 和 length 有什么差别
回答 1 matlab 中 size 函数的用法里,size 返回全部维度尺寸,length 只返回最长维度的标量数值,多维场景如果需要完整行列信息,必须使用 size 函数。
问题 2 matlab 中 size 函数的用法三维数组可以用 [m,n]=size (A) 吗
回答 2 matlab 中 size 函数的用法里面,三维数组不推荐使用 [m,n]=size (A),维度超过二维会出现报错,正确写法是 sz=size (A),再通过索引提取每一个维度数值。
问题 3 matlab 中 size 函数的用法输入标量返回什么结果
回答 3 matlab 中 size 函数的用法里面,输入单个标量的时候,size 返回 1 1,代表这个标量是一行一列的矩阵。
问题 4 matlab 中 size 函数的用法怎么单独读取列数
回答 4 matlab 中 size 函数的用法里面,单独读取列数可以写 size (A,2),参数 d 等于 2 代表第二维也就是列维度,直接返回列的总个数。
【免责申明】
本文 matlab 中 size 函数的用法相关内容基于 matlab 官方内置函数规则整理,不同版本函数行为基本一致,自定义类对象如果重载 size 函数,返回结果会发生改变,内容仅作为编程学习参考,不覆盖所有特殊对象场景。


