首页 >> 知识问答 >

问matlab 矩阵各种表示方法 矩阵创建与书写全方式

2026-11-09 14:10:40

答

matlab 里面矩阵是最基础的数据单元,矩阵各种表示方法主要分为直接手工输入法,冒号生成法,内置函数生成法,拼接扩展法,特殊矩阵生成法,还有稀疏矩阵表示法这几大类,matlab 底层所有数值运算基本都是基于矩阵完成,一维向量本质也是特殊矩阵,行向量列向量都属于矩阵的特殊形式,新手经常分不清不同创建方式适用场景,手工输入适合小矩阵,内置函数适合大尺寸矩阵批量生成,拼接适合把多个小矩阵组合成大矩阵,不同表示方法语法规则统一遵循方括号,分号用来分行,逗号或者空格用来分隔同一行元素,这是 matlab 矩阵书写最核心的基础规则,写代码的时候只要掌握这套规则,绝大多数矩阵创建需求都可以实现。

matlab 设计之初就是面向矩阵运算,所以语法专门为矩阵做了优化,不需要像其他编程语言那样循环逐个赋值,直接用方括号语法一次性定义矩阵,同时配套大量内置矩阵函数,用来生成单位矩阵零矩阵全一矩阵对角矩阵这类工程常用矩阵,减少重复写循环代码,提升编写效率,这也是 matlab 矩阵表示方式丰富的根本原因。

基础手工输入表示法

手工输入就是直接使用方括号把元素包裹起来,同一行元素可以用空格或者逗号隔开,不同行之间用分号分隔

行向量表示 元素横向排列 例如 a = [1 2 3 4]

列向量表示 每一个元素单独一行,用分号分隔 例如 b = [1;2;3;4]

普通二维矩阵 多行多列,行内元素空格分隔,行与行之间分号换行 例如 c = [1 2 3;4 5 6;7 8 9]

注意事项 方括号里面元素数量每一行必须保持一致,行列元素个数不匹配会直接报错,矩阵元素可以是数值,也可以是已经定义好的变量表达式

冒号序列生成表示法

冒号是 matlab 非常重要的运算符,可以自动生成等差序列,用来快速生成一维向量,也可以配合生成矩阵的行列

基础格式 起始值 步长 终止值

例如 1:2:10 代表从 1 开始步长为 2,一直到不超过 10 的序列

如果省略步长,默认步长是 1,比如 1:5 就是 1 2 3 4 5

这个方式经常用来批量生成矩阵的行索引列索引,也可以和其他方式组合构造矩阵

内置函数特殊矩阵表示法

函数名称矩阵类型语法格式用途说明
zeros零矩阵zeros(m,n)生成 m 行 n 列全部为 0 矩阵
ones全一矩阵ones(m,n)生成 m 行 n 列全部为 1 矩阵
eye单位矩阵eye(n)生成 n 阶对角为 1 其余为 0 单位矩阵
diag对角矩阵diag(v)把向量 v 放到主对角线上生成对角矩阵
rand随机矩阵rand(m,n)生成 m 行 n 列 0 到 1 均匀随机矩阵
randn正态随机矩阵randn(m,n)生成 m 行 n 列标准正态分布随机矩阵
magic幻方矩阵magic(n)生成 n 阶幻方矩阵
hilb希尔伯特矩阵hilb(n)生成 n 阶希尔伯特矩阵

矩阵拼接表示法

拼接就是把已经创建好的多个小矩阵合并成新的大矩阵,分为水平拼接和垂直拼接

水平拼接 使用方括号横向连接,要求所有子矩阵行数必须相同,写法 [A B]

垂直拼接 使用方括号纵向连接,要求所有子矩阵列数必须相同,写法 [A;B]

还有 cat 函数拼接,可以指定拼接维度,cat (维度 A B),适合三维以及更高维数组矩阵拼接

稀疏矩阵表示法

普通矩阵是稠密矩阵,所有元素都占用存储空间,当矩阵里面绝大多数元素都是 0 的时候,就适合使用稀疏矩阵表示,只保存非零元素的行号列号和数值,大幅节省内存

创建方式主要是 sparse 函数,也可以先写稠密矩阵再用 sparse 转换,full 函数可以把稀疏矩阵转回普通稠密矩阵,这个表示方式多用于大型工程矩阵求解,普通小矩阵一般不用稀疏表示。

矩阵索引与切片表示

矩阵创建之后,还需要掌握索引表示方式,这也是矩阵表示重要部分,matlab 索引是从 1 开始,不是从 0 开始

单个元素索引 A (i,j) 代表第 i 行第 j 列元素

整行提取 A (i,:) 提取第 i 行全部列

整列提取 A (:,j) 提取第 j 列全部行

子矩阵提取 A (2:4,1:3) 提取 2 到 4 行,1 到 3 列的子矩阵

线性索引 A (k) 按列优先顺序进行编号索引

【常见问题】

问题 1 matlab 矩阵各种表示方法里面手工输入分行为什么报错

回答 1 matlab 矩阵各种表示方法里手工输入矩阵,分行必须使用分号,如果同一行元素数量不一致,就会报维度错误,写的时候要保证每一行元素个数统一。

问题 2 matlab 矩阵各种表示方法里冒号生成法能不能直接生成二维矩阵

回答 2 matlab 矩阵各种表示方法里冒号生成法默认生成一维等差向量,不能直接生成完整二维矩阵,一般是配合其他方式,用来构造矩阵行列序列或者索引切片。

问题 3 matlab 矩阵各种表示方法里稀疏矩阵和普通矩阵运算兼容吗

回答 3 matlab 矩阵各种表示方法里稀疏矩阵可以和普通矩阵参与大部分运算,运算结果依旧保持稀疏格式,使用 full 函数就可以转回普通稠密矩阵。

问题 4 matlab 矩阵各种表示方法里水平拼接和垂直拼接要求是什么

回答 4 matlab 矩阵各种表示方法里水平拼接要求子矩阵行数一致,垂直拼接要求子矩阵列数一致,维度不匹配的时候拼接操作会直接报错。

【免责申明】

本文基于 matlab 通用版本语法整理,不同版本 matlab 部分高阶矩阵函数可能存在差异,本文仅作为学习参考,不构成官方说明,如需准确信息请查阅 matlab 官方帮助文档。

 

相关阅读

最新文章