MATLAB面向矩阵!
MATLAB面向矩阵!
MATLAB面向矩阵!
MATLAB提供矩阵意义下
算术运算
关系运算
逻辑运算
当然也有针对矩阵元素的运算,单个数据的算术运算只是矩阵运算的一种特例
算术运算
加 + 、减 - 、乘 × 、除 \ (左除) / (右除) 、乘方 ^
加减运算
要求两矩阵同型,即维数、大小相同
标量与矩阵进行加减运算时,把标量与矩阵的每一个元素相加减
乘运算
若矩阵A与矩阵B相乘,要求A的列数与B的行数相等,此时称AB矩阵是可乘的,或AB两矩阵维数和大小相容
除法运算
右除
如果矩阵A是非奇异方阵,
B右除以A 即 B/A 等价于B*inv(A) A矩阵的逆右乘B矩阵
B左除以A 即 A\B 等价于inv(A)*B A矩阵的逆左乘B矩阵
inv() 求矩阵的逆
对于矩阵来说,右除和左除表示两种不同的除数矩阵和被除数矩阵关系,一般B右除以A不等于B左除以A
而对于含有标量的除法,左除右除一样一样的
乘方运算
一个矩阵A的乘方运算可以表示为 A^x,此处x为标量
点运算
两矩阵进行点运算是指它们对应位置元素进行相关运算,故要求两矩阵同型
点乘.*、点右除./、点左除.\、点乘方.^
关系运算
<、<=、>、>=、~=(不等于)
当参与比较的量是两个同型的矩阵时,比较是对两矩阵相同的位置元素按标量的关系运算规则逐个进行
当参与比较的量一个是矩阵,一个是标量时,则将标量与矩阵的每一个元素按标量的关系运算规则进行比较
上述结果都是一个与原矩阵同型的矩阵,它的元素由0和1组成
逻辑运算
MATLAB提供 &、|、~ 三种逻辑运算
矩阵与矩阵、矩阵与标量的逻辑运算与关系运算类似
例子
求水仙花数:各位数字的立方之和等于该数字本身的三位正整数
>> A=100:999;
>> num1=rem(A,10);
>> num2=rem(fix(A/10),10);
>> num3=fix(A/100);
>> res=find(A==num1.^3+num2.^3+num3.^3)
res =
54 271 272 308
>> res = A(res)
res =
153 370 371 407
字符串的表示
MATLAB中,字符串是用单引号括起来的字符序列
>> str='I''m you.'
str =
'I'm you.'
>> str(1:2)
ans =
'I''
字符串里的 ’ 用两个 ’ 来表示
char=[‘abcde’;‘12345’];
char(2,3) = ‘3’
例子
① 取第1~5个字符组成的子字符串
② 将字符串倒过来重新排列
③ 将字符串中的小写字母变成相应的大写字母,其余字符不变
④ 统计字符串中小写字母的个数
ch='ABc123d4e56Fg9';
subch=ch(1:5)
revch=ch(end:-1:1)
k=find(ch>='a'&ch<='z')
ch(k)=ch(k)-('a'-'A')
length(k)
字符串的执行
eval() 函数
>> PI = pi;
>> m='[PI,sin(PI),cos(PI)]';
>> res=eval(m)
res =
3.1416 0.0000 -1.0000
有种将字符串解释为代码执行的感觉
字符串的操作
取ASCII值
abs() 和 double() 函数都可以用来获取字符串矩阵对应的ASCII码数值矩阵
char() 函数可以把ASCII码矩阵转换为字符串矩阵
>> name='MATLAB'
name =
'MATLAB'
>> ASCII=abs(name)
ASCII =
77 65 84 76 65 66
>> char(ASCII+32)
ans =
'matlab'
字符串比较
①利用关系运算符比较
两个同长度的字符串可以通过关系运算符比较,结果是对应位置字符比较结果的数值向量
②字符串比较函数
strcmp(s1, s2 [, n]) 比较字符串s1和s2前n个字符是否相等,相等返回1否则返回0 (n为字符个数,可选项)
strcmpi(s1, s2 [, n]) 比较前n个字符是否相等,忽略大小写,相等返回1否则返回0 (n为字符个数,可选项)
字符串查找与替换
findstr(s1,s2):返回短字符串在长字符串中的开始位置,与参数位置无关
strrep(s1, s2, s3):等价于Java中String.replaceAll
还要拾起线代qnq
2019/4/17