[matlab] 3.矩阵

matlab矩阵运算很强大 ,几乎所有涉及矩阵运算的命令都有。

事实上,matlab里面所有变量都是以矩阵的形式保存下来的。

 

%%
>> x=[1:2.1:10]

x =

    1.0000    3.1000    5.2000    7.3000    9.4000
1冒号生成法

非常方便,相当于python里面的for循环

x=linspace(1,10,6)
%(初值,终值,项数)
linspace法

A(n):访问矩阵A里的第n个元素(以列为遍历顺序)

matlab内置一系列特定矩阵:[]空矩阵、eye 单位阵、blkdiag对角矩阵、ones 全部元素为1的矩阵、zeros全部元素为0的矩阵

blkdiag(1,2,3,4)
对角矩阵

matlab内置常见的指令: max 、min求最大最小元素;mean求平均值;median求中位数;sum求和【注意sum对矩阵操作的时候是按列求和】;prod求积;length求数组长度;size求矩阵的阶数。

c=blkdiag(1,2,3,4)
c(4,:)=5
sum(c)
sum(sum(c))
sum求和

关于除法,注意matlab里有两种除法,左除和右除/【相当于左乘或者右乘那个矩阵的逆矩阵】

线性代数里面学过: 除以一个矩阵 等于 乘以它的逆矩阵,

所以只有方阵才能做除法哦【可逆的方阵】

举例:【注意:rank是求矩阵的 秩】

A=[1,0,1;0,0,2;3,1,2];
rank(A)
B=[2 5 1;2 0 3;1 2 2];
rank(B)
format rat %显示分数格式
A/B
A*inv(B)
BA
inv(B)*A
矩阵的除法

结果如图:

 关于matlab中的点运算

A=[1,0,1;0,0,2;3,1,2];
B=[2 5 1;2 0 3;1 2 2];

A*B
A.*B
A.^2
点运算

下面是一些对矩阵的操作函数

转置:在矩阵后面加一个 ' 就好

reshape 改变矩阵阶数

repmat 按指定的行列数复制矩阵

rot90 逆时针旋转矩阵90度

flipud 上下翻转
filplr 左右翻转

A=[1,0,1;0,0,2];
G=repmat(A,2,2)
repmat 整个复制

A=[1,0,1;0,0,2]
H=reshape(A,3,2)
矩阵重新塑形(行列)

关系运算符

A=[1,2,3;4,5,2]
B=3*ones(2,3)
A>B
%可以用来判别 符合条件的数据位
矩阵关系运算符

 find主要就是找到矩阵中符合条件的元素的序号(按列顺序)

A=[1,2,3;4,5,2]
B=3*ones(2,3)
find(A==B)
find函数的应用

A=[1,2,3;4,5,2]
B=3*ones(2,3)
find(A>3) %返回满足条件的列序号
A(find(A>3))  %根据列序号取出具体位置的数值
利用find返回的列序号取具体值

再补充一些系统的命令

clc清屏

who 显示已有变量

whos 显示已有变量和具体信息

home 将光标移到左上角

clf 清除图像

A=magic(5);
C=[eye(5);eye(5)] ;
B=C*A  %线性代数 左乘单位矩阵  行方向复制A矩阵
左乘单位矩阵 复制矩阵
A=magic(5);
A=[A;A]
矩阵拼接

计算两点距离

A=magic(2);
A=A(:);
B=magic(2);
B=B(:);
D=pdist2(A,B)
pdist2 计算距离

原文地址:https://www.cnblogs.com/clemente/p/9538358.html