MATLAB矩阵运算
1. 矩阵的加减乘除和(共轭)转置
(1) 矩阵的加法和减法
如果矩阵A和B有相同的维度(行数和列数都相等),则可以定义它们的和A+B以及它们的差A-B,得到一个与A和B同维度的矩阵C,其中Cij=Aij+Bij或Aij-Bij.
另外Matlab还支持任意一个矩阵A与一个标量s相加,结果为矩阵的每一个元素加减标量,得到一个与A同维度的新的矩阵,即A+s的各个元素为Aij+s.
(2) 矩阵的乘法
如果矩阵A的列数等于矩阵B的行数,则可以将A和B相乘,命令为A*B,得到一个新的矩阵C,C的行数等于A的行数,列数等于B的列数. 由于矩阵的乘法不满足交换律,所以一般A*B不等于B*A.
(3) 矩阵的张量积(tensor product)
矩阵A和B的张量积A⊗B可以方便地用kron函数计算,即使用命令kron(A,B), 例如
(4) 矩阵的除法
在MatLab中,有两个矩阵除法符号,左除\和右除/. 如果A是一个非奇异方阵(nonsingular square, 即满秩方阵),B的行数与A的行数相等,那么A\B=A-1B. 如果C的列数与A的列数相等,那么C/A=CA-1.
从另一个角度来看,X=A\B是矩阵方程AX=B的解,X=C/A是矩阵方程XA=C的解. 如果b是一个行数与A的行数相等的列向量,则向量x=A\b是线性方程组 Ax=b的解. 且在矩阵方程AX=B中,A可以是一个m×n的矩阵,如果m=n则有唯一解;如果m<n则有多个解,Matlab会返回一个基础解;如果m>n则会返回一个最小方阵解.
(5) 矩阵的转置和共轭转置
在Matlab中,矩阵的共轭转置用撇号’表示,如果不需要对元素进行共轭运算,仅仅只对矩阵进行转置,则在撇号之前输入一个点号,即 .’ . 对于实数矩阵A,A’和A.’是相同的.
2. 矩阵元素操作运算
矩阵的运算既可以是如前所述的正常的整体运算,也可以是矩阵对应的元素依次进行标量运算,也叫数组运算,即把矩阵看做是二维数组. 对矩阵进行数组运算后得到的结果是一个与参与运算的矩阵维度相同的新矩阵,.这种元素间的算术运算的前提是参与运算的两个矩阵的维数要相同.
对于加法和减法,元素操作运算和矩阵运算没有差别,而对于乘、除和幂运算符,相应的数组运算符是在一般的算术运算符前面加上一个点号,如
+ - .* ./ .\ .^
其中,A./B 是指A中的元素除以B中相应的元素,即A./B 的第i行第j列的元素(A./B)ij=Aij/Bij,而(A.\B)ij=Bij\Aij. 这些元素运算符的使用例子如下所示:
在Matlab中预定义的数学标准函数,如sin(x), abs(x)等都是基于对矩阵元素的运算. 如果函数f(x)是这样的一个函数,A是一个m×n的矩阵,其元素是aij ,那么 f(A)也是一个m×n的矩阵,其第i行第j列的元素为f(aij),例如
其中pi是Matlab的预定义变量,值为π,i也是预定义变量,表示复数的单位.
3. 常用的矩阵函数
矩阵函数是指参数为矩阵的函数,函数结果可能是一个标量值也可能是一个函数或者向量. Matlab中常用的矩阵函数包括:
(1) rank(A): 求矩阵A的秩,即A中线性无关的行数或者线性无关的列数.
(2) det(A): 求矩阵A的行列式值.
(3) inv(A): 如果A是一个非奇异(nonsingular)矩阵,则inv(A)返回A的逆矩阵. 另外还可以用左除A\eye(n)或右除eye(n)/A来计算A的逆,且在Matlab中用左除或右除来计算逆所花的计算时间比用inv函数要少,也比inv具有更好的容错性(error-detection properties).
(4) dot(x,y): 求同维度的向量x和y的内积/点积. 若A和B是两个具有相同维度的矩阵,则dot(A,B)是计算A和B对应列的内积,结果是一个行向量,这个行向量的列数等于A或B的列数. 例如
(5) cross(x,y): 计算同维度的向量x和y的叉积,结果是一个向量,其方向由右手定则决定,长度等于|x|*|y|sin<x,y>. 若A和B是两个具有相同维度的矩阵,则cross(A,B)是计算A和B对应列的叉积,结果是一个维度与A和B相等的矩阵.
(6) kron(A,B): 得到矩阵A和B的张量积.
(7) isequal(A,B): 如果矩阵A和B是相同的,即具有相同的维数和相同的内容,则返回1.
(8) isreal(A): 判断A是否是一个实矩阵,如果是则返回1,否则返回0.
(9) trace(A): 计算方阵A的迹,即对角线元素之和.
(10) eig(A): 计算方阵A的特征值,结果是一个列向量,向量中元素的个数等于特征值的个数,即A的维度(A的行数或列数).
(11) [U,D]=eig(A): 计算方阵A的特征值和特征向量,得到两个方阵U和D,其中D的对角线元素为A的特征值,U的列向量为A的特征向量(可能是未normalize的结果),例如
MATLAB矩阵运算的更多相关文章
- Matlab 矩阵运算
1.Syms 和sym的区别: syms是定义多个符号是符号变量的意思 sym只能定义一个符号变量,但可以具体到这个符号变量的内容 例:syms f z; %定义下x和y f=sym('a+b+c') ...
- Matlab——矩阵运算 矩阵基本变换操作
矩阵运算 + 加 - 减 .* 乘 ./ 左除 .\ 右除 .^ 次方 .' 转置 除了加减符号,其余的运算符必须加“.” >> a = : a = >> a- %减法 ans ...
- matlab 矩阵运算技巧
1.a=a(:) 作用:将矩阵转化成列向量 a=[a11 a12 a13 a=[a11 a21 a12 a22 a13 a23]^T a21 a22 a23] ...
- [matlab] 3.矩阵
matlab矩阵运算很强大 ,几乎所有涉及矩阵运算的命令都有. 事实上,matlab里面所有变量都是以矩阵的形式保存下来的. %% >> x=[1:2.1:10] x = 1.0000 ...
- matlab基本操作总结
1.clear;//清除工作平台变量2.close all;//关闭打开的图形窗口3.I = imread('C:\Users\dell\Desktop\rice.jpg');//读取图像,存储在I数 ...
- matlab中矩阵式子的不成熟理解
matlab中的矩阵式的系统方式理解:一个矩阵式代表一个系统的作用,列代表输入,行代表输出,有多少列就有多少输入,有多少行就有多少输出,矩阵式的相加代表的是线性系统的叠加作用,矩阵式的相乘代表的是两个 ...
- MATLAB基础指令操作
由于课程实验需要学习使用了MATLAB,在此记录一下MATLAB的基本操作和命令,供参考与查阅. 学习过程中的资料也链接如下: MATLAB矩阵运算:https://wenku.baidu.com/v ...
- MATLAB入门学习(二)
关于矩阵 ~o( =∩ω∩= )m matlab矩阵运算很强大 ,几乎所有涉及矩阵运算的命令都有. 事实上,matlab里面所有变量都是以矩阵的形式保存下来的. 一个数字是1x1矩阵 我们来看看矩阵的 ...
- [转] Matlab与C++混合编程,添加OpenCV库
原文地址 峰回璐转 最近在做运动医学软件优化工作,此款软件框架及算法语言全由matlab实现,虽然matlab矩阵运算.数值计算能力强大,但速度让人难以忍 受.软件立刻移植到C++上又不太实际,故采用 ...
随机推荐
- log4j2使用入门(一)
log4j2是log4j的一个升级版,与log4j1相比进行了很大的改善,同时也修复了一些logback的架构上的问题.所以是目前应用开发的首选的日志器(下载位置:http://apache.faye ...
- Promise源码深入理解
) ) }); ) }, ) }); ) ) }, ) }); ) }, ) }); p.then(function (x) { console.log(x) }) //输出 1 链式调用1 链式调用 ...
- POJ 1185 炮兵阵地 【状压DP】
<题目链接> 题目大意: 司令部的将军们打算在N*M的网格地图上部署他们的炮兵部队.一个N*M的地图由N行M列组成,地图的每一格可能是山地(用"H" 表示),也可能是平 ...
- ASP.NET Core 3.0预览版体验
目前.NET Core 3.0的版本为.NET Core 3.0 Preview 3,对应ASP.NET Core 3.0 Preview 3. ASP.NET Core 3.0 之后将不再支持.NE ...
- Jenkins环境搭建(4)-配置定时构建
每次手动触发job构建,是很麻烦的一件事情,job中可以配置定时构建,今天就来分享下定时构建:构建分为两种:定时构建和轮询SCM. 一.定时构建 Jenkins采用了著名的UNIX任务调度工具CRON ...
- Java Web 浏览器关闭后Session就会被销毁吗?
浏览器关闭后Session就会被销毁吗? Session是JSP的九大内置对象(也称为隐含对象)中的一个,用于保存当前用户的状态信息,初学者可能认为Session的生命周期是从打开一个浏览器发送请求到 ...
- python之面向对象深入探测
一 __doc__ 表示类的描述信息 #!/usr/bin/env python # -*- coding: utf-8 -*- class C: """ 这是个大美女 ...
- ECMA Script 6_symbol(symbol.iterator) 新接口_iterator接口
iterator 接口 只要部署了 iterator 接口 symbol(symbol.iterator), 则可以进行 for...of 遍历
- oralce 将浮点型字段,转为指定精度 并且四舍五入
使用 Round() 函数,该函数有两个参数,第一个参数: 将要转换的字段,第二个参数:保留的小数点位数 1 代表保留1位 2 代表保留2位 例子: SELECT round(123.446,1) ...
- 梦里寻她千百度,Bug却在隔壁老张处
程序员与 Bug 是一对矛盾的存在,程序员既要在解决 Bug 中获得成就感,同时也讨厌 Bug 本身的存在.“程序不息,Bug 不止”,程序员在与 Bug 的斗争中,也有很多有趣的事情发生,我们整理了 ...