Matlab小结1(矩阵)

MATLAB语言的变量名规则:
由一个字母引导,后面可以为其他字符;
区分大小写 Abc ≠ ABc ≠ abC , etc.
有效的变量名 MYvar12, mY_Var12 和 MyVar12_
错误的变量名 12MyVar, _MyVar12, MyVar-

%注释

数据结构:
① 数值型数据结构
双精度数值变量64位 (8字节),double() 函数将数组转换为双精度
单精度数据结构 single(),32位(4字节)
uint8()常用于图像表示和 处理,8位
int8(),int16(),int32(),uint16(),uint32()
多维数组:是矩阵的直接扩展,多个下标
单元数组:将不同类型数据集成到一个变量名下面,用{ }表示,或cell()
矩阵:>>A=[1,2,3;4,5,6;7,8,0] 以行为一个分号,其中1,2,3可以表示为1:3
复数:a=1+2i也可以1+2j

② 符号型变量 sym(A),常用于公式推导和求解析解
显示符号变量的属性 assumptions() 例>>syms a real; assumptions(a)
设置符号变量类assume(), assumeAlso() 例>> syms x real ; assume(x>=-1); assumeAlso(x<5)
显示符号变量的指定精度 – 变精度算法函数vpa函数,例>> vpa(A) ; vpa(A,n) 无n默认精度30位十进制有效数字

③ 字符串型数据:char()或用单引号括起来

④ 类与对象:可以定义重载函数,类(变量)与对 象是“面向对象”编程的基本元素,类可包含各种下级信息(变量或运算),用classdef()定义类

符号型数值与双精度数值的区别
1/3的双精度存储 >>1/3
1/3的符号变量存储 >>sym(1/3)

格式相关说明
① syms是定义多个符号是符号变量,sym只能定义一个符号变量,如syms x y 就是定了符号变量x y以后x y就可以直接使用了,运算出来的结果也是符号变量,>> B=sym(‘12345678901234567890’) 输出B =12345678901234567890,缺少单引号会导致后几位混乱
② >> assumeAlso(k1<=230)
>> assumeAlso(k1>0)
用来表示k1同时满足两个条件

③ 冒号表达式生成
>>v1=0:0.2:pi 生成一排0到pi以0.2为间隔的向量
>>v2=linspace(0,pi,16) 生成一排0到pi的16等分的向量 0,0.2094,0.4189,…,3.1416如果不声明几等分则默认100等分
>>v3=0:-0.1:pi 生成空的1×0 double 行向量
>>v4=0:pi 生成结果0,1,2,3不声明间隔默认间隔为1
>>v5=pi:-1 :0 结果3.1416,2.1416,1.1416,0.1416说明也可以反向生成
Linspace声明几等分时和冒号声明的位置不同,前者中间为重点,后者中间为间隔

④ 子矩阵提取 B=A(v1,v2) v1 表示子矩阵要保留的行号构成的向量,v2 表示要保留的列号构成的向量, : 表示要提取所有行或列,取决于其位置,end 的使用,表示取到行或列的最后(可以理解为先取v1行构成的矩阵,在对其取v2列)
例子分析:>> A=[1,2,3;4,5,6;7,8,0],>> B1=A(1:2:end,:)得 在这里插入图片描述
意为从第一行到最后一行间隔为2开始取,:取全部的列;>> B2=A([3,2,1],[2,3])得在这里插入图片描述
意为按序分别取第三行第二行第一行的第二列和第三列;>> B3=A(:,end:-1 :1)得 在这里插入图片描述
同第一个倒序取;>> B4=A([1,1,1],: ) 在这里插入图片描述
表明可以取重复的
⑤ 矩阵转置 已知矩阵A,Hermite转置(共轭转置) C=A’ ,普通转置 C=A.’
⑥ 矩阵加减法 已知矩阵A,B,C=A+B,若D=9,E=D-A也可以执行,此时A已知默认将D看作与A同维度全是9的矩阵
⑦ 矩阵乘法 已知矩阵A,B,C=AB,要注意A的列数和B的行数一样,若D=9,E=DB或B*D均表示对B的每一个元素乘9;C=A.B表示A、B对应元素相乘即AijBij,故A与B维度相同

矩阵除法
A,B已知
矩阵左除:对于AX=B,X=A\B(注意是反斜杠),若A为非奇异阵,则X=(A逆)B
矩阵右除:对于XA=B,X=B/A

矩阵翻转:
A已知
B1=fliplr(A) 左右翻转,记忆flip left to right
B2=flipud(A) 上下翻转,记忆flip up to down
B3=rot90(A) 逆时针旋转90度,rotate
B4=rot90(A,2) 逆时针旋转90度两次
B5=rot90(A,3) 逆时针旋转90度三次
B6=rot90(A,4)逆时针旋转90度四次,即回到A

矩阵乘方
A已知,A的x次幂,F=A^x,x可为整数(包括正负)、非整数

矩阵点运算
上面的矩阵乘法已经提及,C=A.B表示A、B对应元素相乘即AijBij,称为Hadamard乘积,对于矩阵乘方同样可以运用点运算,C=A.^ B则Cij=AijBij,另举两例,B1=A.5意为Bij=Aij5,B2=5.A意为Bij=5^Aij

矩阵norm函数
矩阵A、B已知,norm(A,p)意为求A的p范数,norm(A)意为求A的二范数,当norm求的二范数为两个矩阵差的时候如norm(A-B),此时这个二范数可表示精确度,精确度这个数越大则表示这两个矩阵越不相似,直接求一个矩阵的二范数和精确度没关系

矩阵逻辑运算
矩阵A、B正常,与运算A&B,或运算A|B,非运算B=~A,异或运算xor(A,B)

矩阵zeros函数
A=zeros(5)生成5*5的零矩阵;B=zeros(3,4)生成3行4列的零矩阵;若A已知,B=zeros(size(A))生成和A维度相同的零矩阵;还可用于生成矩阵的一部分如A=[1:5;6:10;zeros(1,5)]则A的第三行全为0

矩阵比较运算
补充说明:输入矩阵和数组时,逗号和空格都表示间隔两个数

find函数:
对于数组,a=[1 0 5 4 3 8 0 9],find(a)输出a中所有非0元素的下标,为1 3 4 5 6 8,和c不同数组下标从1开始计数,find(a>4)输出a中大于4的元素的下标3 6 8,而find(a,x)返回前n个非零的下标,find(a,1,‘last’)返回最后一个非0值的下标,;
对于矩阵,以A=[1:5;6:10;zeros(1,5)]为例,find函数按列分析,即将A矩阵排为一列1 6 0 2 7 0 3 8 0 4 9 0 5 10 0,find(A<6)输出列序号(1 3 4 6 7 9 10 12 13 15)的转置,[ i , j ]=find(A>1)输出A中大于1的元素的行标 i 和列标 j ,输出结果为两个列向量i和j,一一对应按列分析的顺序,[i,j,v]find(A>1)同上v为元素的值

all函数:
A已知,对于向量A,all(A),若所有元素非0返回1否则0;对于矩阵A,all(A)返回一个行向量,对应每一列是否全为非0元素,若某列有一个元素为0则返回0否则1,all(A,1)等同于all(A),all(A,2)则是按行分析,意义同上,返回一个列向量。all函数不止可以检验非0,括号内可以输入其他条件,如all(A.’~=5)则是先求A的转置,若一列内元素都不等于5则返回1反之返回0,all(A==0)则可以检验是否都为0

any函数
和all相反,有一个满足即返回1否则0,未声明时同样优先按列分析

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值