- Matlab 教程
- MATLAB - 首页
- MATLAB - 概述
- MATLAB - 特性
- MATLAB - 环境设置
- MATLAB - 编辑器
- MATLAB - 在线版
- MATLAB - 工作区
- MATLAB - 语法
- MATLAB - 变量
- MATLAB - 命令
- MATLAB - 数据类型
- MATLAB - 运算符
- MATLAB - 日期和时间
- MATLAB - 数字
- MATLAB - 随机数
- MATLAB - 字符串和字符
- MATLAB - 文本格式化
- MATLAB - 时间表
- MATLAB - M 文件
- MATLAB - 冒号表示法
- MATLAB - 数据导入
- MATLAB - 数据导出
- MATLAB - 数据归一化
- MATLAB - 预定义变量
- MATLAB - 决策
- MATLAB - 决策语句
- MATLAB - if-end 语句
- MATLAB - if-else 语句
- MATLAB - if-elseif-else 语句
- MATLAB - 嵌套 if 语句
- MATLAB - switch 语句
- MATLAB - 嵌套 switch
- MATLAB - 循环
- MATLAB - 循环
- MATLAB - for 循环
- MATLAB - while 循环
- MATLAB - 嵌套循环
- MATLAB - break 语句
- MATLAB - continue 语句
- MATLAB - end 语句
- MATLAB - 数组
- MATLAB - 数组
- MATLAB - 向量
- MATLAB - 转置运算符
- MATLAB - 数组索引
- MATLAB - 多维数组
- MATLAB - 兼容数组
- MATLAB - 分类数组
- MATLAB - 元胞数组
- MATLAB - 矩阵
- MATLAB - 稀疏矩阵
- MATLAB - 表格
- MATLAB - 结构体
- MATLAB - 数组乘法
- MATLAB - 数组除法
- MATLAB - 数组函数
- MATLAB - 函数
- MATLAB - 函数
- MATLAB - 函数参数
- MATLAB - 匿名函数
- MATLAB - 嵌套函数
- MATLAB - return 语句
- MATLAB - 空函数
- MATLAB - 局部函数
- MATLAB - 全局变量
- MATLAB - 函数句柄
- MATLAB - 滤波器函数
- MATLAB - 阶乘
- MATLAB - 私有函数
- MATLAB - 子函数
- MATLAB - 递归函数
- MATLAB - 函数优先级顺序
- MATLAB - map 函数
- MATLAB - mean 函数
- MATLAB - end 函数
- MATLAB - 错误处理
- MATLAB - 错误处理
- MATLAB - try...catch 语句
- MATLAB - 调试
- MATLAB - 绘图
- MATLAB - 绘图
- MATLAB - 绘制数组
- MATLAB - 绘制向量
- MATLAB - 条形图
- MATLAB - 直方图
- MATLAB - 图形
- MATLAB - 二维线图
- MATLAB - 三维图
- MATLAB - 图表格式化
- MATLAB - 对数坐标轴图
- MATLAB - 绘制误差条
- MATLAB - 绘制三维等值线图
- MATLAB - 极坐标图
- MATLAB - 散点图
- MATLAB - 绘制表达式或函数
- MATLAB - 绘制矩形
- MATLAB - 绘制频谱图
- MATLAB - 绘制网格曲面
- MATLAB - 绘制正弦波
- MATLAB - 插值
- MATLAB - 插值
- MATLAB - 线性插值
- MATLAB - 二维数组插值
- MATLAB - 三维数组插值
- MATLAB - 多项式
- MATLAB - 多项式
- MATLAB - 多项式加法
- MATLAB - 多项式乘法
- MATLAB - 多项式除法
- MATLAB - 多项式的导数
- MATLAB - 变换
- MATLAB - 变换函数
- MATLAB - 拉普拉斯变换
- MATLAB - 拉普拉斯滤波器
- MATLAB - 高斯-拉普拉斯滤波器
- MATLAB - 逆傅里叶变换
- MATLAB - 傅里叶变换
- MATLAB - 快速傅里叶变换
- MATLAB - 二维逆余弦变换
- MATLAB - 向坐标轴添加图例
- MATLAB - 面向对象
- MATLAB - 面向对象编程
- MATLAB - 类和对象
- MATLAB - 函数重载
- MATLAB - 运算符重载
- MATLAB - 用户定义类
- MATLAB - 复制对象
- MATLAB - 代数
- MATLAB - 线性代数
- MATLAB - 高斯消元法
- MATLAB - 高斯-约当消元法
- MATLAB - 简化行阶梯形
- MATLAB - 特征值和特征向量
- MATLAB - 积分
- MATLAB - 积分
- MATLAB - 二重积分
- MATLAB - 梯形法则
- MATLAB - 辛普森法则
- MATLAB - 其他
- MATLAB - 微积分
- MATLAB - 微分
- MATLAB - 矩阵的逆
- MATLAB - GNU Octave
- MATLAB - Simulink
- MATLAB - 有用资源
- MATLAB - 快速指南
- MATLAB - 有用资源
- MATLAB - 讨论
MATLAB - 转置运算符
矩阵的转置是矩阵上非常常用的运算。
什么是矩阵的转置?
矩阵的转置是通过将行与列互换,列与行互换得到的。
假设你有一个大小为 3x3(即 3 行 3 列)的矩阵 A。矩阵 A 的转置用字母 T 作为矩阵 A 的下标表示。
例如,矩阵 A 的转置将是 AT 或 A'。
让我们尝试一个例子
A = 1 2 3 4 5 6 7 8 9
矩阵 A 的转置将是
AT = 1 4 7 2 5 8 3 6 9 OR A’ = 1 4 7 2 5 8 3 6 9
如果你对转置矩阵再次进行转置,你将得到原始矩阵。
让我们从主矩阵 A 开始。
A = 1 2 3 4 5 6 7 8 9
矩阵 A 的转置将是
AT = 1 4 7 2 5 8 3 6 9
让我们再次进行转置,你应该得到的结果等于我们开始使用的原始矩阵。
(AT)T = 1 2 3 4 5 6 7 8 9
所以方程 (AT)T = A 或 (A')' = A。
MATLAB 中的转置方法
在 MATLAB 中,你可以使用运算符 .'(即 A .')或 '(即 A')来查找矩阵的转置,或者使用 transpose() 方法。
语法
T = A .' T = A' T = transpose(A)
transpose() 方法或使用 .' 或 ' 将返回矩阵的转置。
示例 1
在这里,我将使用运算符 .' 来查找矩阵的转置。
A = [1 2 3; 4 5 6; 7 8 9] T = A .'
在 MATLAB 中执行后,你将得到以下输出
>> A = [1 2 3; 4 5 6; 7 8 9] >> T = A.' A = 1 2 3 4 5 6 7 8 9 T = 1 4 7 2 5 8 3 6 9 >>
示例 2
使用运算符 '
A = [1 2 3; 4 5 6; 7 8 9] T = A '
在 MATLAB 中执行后,你将得到以下输出。
>> A = [1 2 3; 4 5 6; 7 8 9] T = A' A = 1 2 3 4 5 6 7 8 9 T = 1 4 7 2 5 8 3 6 9 >>
示例 3
现在让我们使用 transpose() 方法。
A = [1 2 3; 4 5 6; 7 8 9] T = transpose(A)
执行后的输出为:
>> A = [1 2 3; 4 5 6; 7 8 9] T = transpose(A) A = 1 2 3 4 5 6 7 8 9 T = 1 4 7 2 5 8 3 6 9 >>
矩阵的转置的转置
现在让我们尝试对矩阵的转置进行转置,以确保我们能得到原始矩阵。
示例 1
使用运算符 (.')
A = [1 2 3; 4 5 6; 7 8 9] T = (A .').'
当在 MATLAB 中执行上述代码时,输出如下:
>> A = [1 2 3; 4 5 6; 7 8 9] T = (A .').' A = 1 2 3 4 5 6 7 8 9 T = 1 2 3 4 5 6 7 8 9 >>
示例 2
使用如下所示的 transpose() 方法。
A = [1 2 3; 4 5 6; 7 8 9] T = transpose(A) Y = transpose(T)
在 MATLAB 中执行后的输出为:
>> A = [1 2 3; 4 5 6; 7 8 9] T = transpose(A) Y = transpose(T) A = 1 2 3 4 5 6 7 8 9 T = 1 4 7 2 5 8 3 6 9 Y = 1 2 3 4 5 6 7 8 9 >>
对复数矩阵进行转置
让我们首先构造一个如下所示的复数矩阵。
A = [5 3 4-1i 3+2i; 0+4i 1-2i 5 5-1i] B = A.'
在 MATLAB 中执行后的输出为:
>> A = [5 3 4-1i 3+2i; 0+4i 1-2i 5 5-1i] B = A.' A = 5 + 0i 3 + 0i 4 - 1i 3 + 2i 0 + 4i 1 - 2i 5 + 0i 5 - 1i B = 5 + 0i 0 + 4i 3 + 0i 1 - 2i 4 - 1i 5 + 0i 3 + 2i 5 - 1i >>
再次对矩阵 B 进行转置将返回原始矩阵,如下所示。
>> B = B.' B = 5.0000 + 0.0000i 3.0000 + 0.0000i 4.0000 - 1.0000i 3.0000 + 2.0000i 0.0000 + 4.0000i 1.0000 - 2.0000i 5.0000 + 0.0000i 5.0000 - 1.0000i >>
转置运算符 (.') 和 (') 之间的区别?
运算符 .' 执行非共轭转置。
运算符 ' 执行共轭转置。
上述运算符对复数矩阵的影响更大。由于运算符 .' 用于非共轭转置;它将确保它不会影响复数虚部的符号。而当使用运算符 (') 时,复数虚部的符号将受到影响。
让我们检查一下包含复数的矩阵以及使用 (.') 和 (') 进行转置的输出。
让我们考虑以下矩阵来测试这两个运算符。
A = [5 3 4-1i 3+2i; 0+4i 1-2i 5 5-1i]
共轭转置 (')
矩阵的共轭转置,也称为厄米特转置或伴随矩阵,是一种数学运算,它包括对矩阵进行转置,然后将每个元素替换为其复共轭。
复数 a + bi 的复共轭是通过改变虚部的符号形成的,结果为 a - bi。但是,对于实数,复共轭保持不变。
>> A = [5 3 4-1i 3+2i; 0+4i 1-2i 5 5-1i] B = A' A = 5.0000 + 0.0000i 3.0000 + 0.0000i 4.0000 - 1.0000i 3.0000 + 2.0000i 0.0000 + 4.0000i 1.0000 - 2.0000i 5.0000 + 0.0000i 5.0000 - 1.0000i B = 5.0000 + 0.0000i 0.0000 - 4.0000i 3.0000 + 0.0000i 1.0000 + 2.0000i 4.0000 + 1.0000i 5.0000 + 0.0000i 3.0000 - 2.0000i 5.0000 + 1.0000i >>
非共轭转置 (.')
你很少会遇到“非共轭转置”这个术语,它指的是不考虑矩阵元素的复共轭的转置运算。
>> A = [5 3 4-1i 3+2i; 0+4i 1-2i 5 5-1i] B = A.' A = 5.0000 + 0.0000i 3.0000 + 0.0000i 4.0000 - 1.0000i 3.0000 + 2.0000i 0.0000 + 4.0000i 1.0000 - 2.0000i 5.0000 + 0.0000i 5.0000 - 1.0000i B = 5.0000 + 0.0000i 0.0000 + 4.0000i 3.0000 + 0.0000i 1.0000 - 2.0000i 4.0000 - 1.0000i 5.0000 + 0.0000i 3.0000 + 2.0000i 5.0000 - 1.0000i >>
另一个可用于处理复共轭转置的方法是 ctranspose()。
语法
B = A' B = ctranspose(A)
此方法很少使用,因为你可以直接使用 A'。ctranspose() 是另一种提供矩阵转置的替代方法。
让我们看看一些使用 ctranspose() 的示例。
示例 1
考虑以下矩阵。
A = [1 2 3; 4 5 6; 7 8 9] B = ctranspose(A)
执行后的输出为:
>> A = [1 2 3; 4 5 6; 7 8 9] B = ctranspose(A) A = 1 2 3 4 5 6 7 8 9 B = 1 4 7 2 5 8 3 6 9 >>
示例 2
在这个例子中,我们将使用如下所示的复数矩阵。
A = [0-2i 4+1i;4+3i 0-2i] B = ctranspose(A)
在 MATLAB 中执行后的输出为:
>> A = [0-2i 4+1i;4+3i 0-2i] B = ctranspose(A) A = 0 - 2i 4 + 1i 4 + 3i 0 - 2i B = 0 + 2i 4 - 3i 4 - 1i 0 + 2i >>