针对矩阵而言的,也有针对矩阵元素的运算。
1.算术运算
(1)基本算术运算
基本算术运算符:+(加)、-(减)、*(乘)、/(右除)、\(左除)、^(乘方)。
lMATLAB的算术运算是在矩阵意义下进行的。
l单个数据的算术运算只是矩阵运算的一种特例
加减运算
l若两矩阵同型,则运算时两矩阵的相应元素相加减。
l若两矩阵不同型,则MATLAB将给出错误信息。
l一个标量也可以和矩阵进行加减运算,这时把标量和矩阵的每一个元素进行加减运算。
乘法运算
l矩阵A和B进行乘法运算,要求A的列数与B的行数相等,此时则称A、B矩阵是可乘的,或称A和B两矩阵维数和大小相容。
l如果两者的维数或大小不相容,则将给出错误信息,提示用户两个矩阵是不可乘的。
除法运算
在MATLAB中,有两种矩阵除法运算:右除/和左除\。表示两种不同的除数矩阵和被除数矩阵。
如果A矩阵是非奇异方阵,则B/A等效于B*inv(A)【A矩阵的逆右乘B矩阵】,A\B等效于inv(A)*B【A矩阵的逆左乘B矩阵】。
>>A=[1,2,3;4,2,6;7,4,9];
>>B=[4,3,2;7,5,1;12,7,92];
>>C1=B/A
C1=-0.1667-3.33332.5000
-0.8333-7.66675.5000
12.833363.6667-36.5000
>>C2=A\B
C2=0.5000-0.500044.5000
1.00000.000046.0000
0.50001.1667-44.8333
结果不相同,对于含有标量的运算,除法运算结果相同。
>>3/4
ans=0.7500
>>4\3
>>a=[10.5,25]
a=10.500025.0000
>>a/5
ans=2.10005.0000
>>5\a
乘方运算
一个矩阵的乘方运算可以表示成A^x,要求A为方阵,x为标量。
>>A=[1,2,3;4,5,6;7,8,0];
>>A^2
ans=303615
668142
395469
(2)点运算
l点运算符:.*、./、.\和.^。
>>A=[1,2,3;4,5,6;7,8,9];
>>B=[-1,0,1;1,-1,0;0,1,1];
>>C=A.*B//两个矩阵对应元素做乘法运算
C=-103
4-50
089
>>D=A*B//矩阵意义下的乘法运算。
D=114
1110
1116
例1当x=0.1、0.4、0.7、1时,分别求y=sinxcosx的值。
x=0.1:0.3:1;
y=sin(x).*cos(x)//必须为点乘运算x为向量,sinxcosx为通长度的向量
2.关系运算通常用来表示条件
l关系运算符:<(小于)、<=(小于或等于)、>(大于)、>=(大于或等于)、==(等于)、~=(不等于)。
l当两个比较量是标量时,直接比较两数的大小。若关系成立,关系表达式结果为1,否则为0。
>>3>4
ans=0
>>x=5//赋值
x=5
>>x==5//关系运算
ans=1
l当参与比较的量是两个同型的矩阵时,比较是对两矩阵相同位置的元素按标量关系运算规则逐个进行,最终的关系运算的结果是一个与原矩阵同型的矩阵,它的元素由0或1组成。
l当参与比较的一个是标量,而另一个是矩阵时,则把标量与矩阵的每一个元素按标量关系运算规则逐个比较,最终的关系运算的结果是一个与原矩阵同型的矩阵,它的元素由0或1组成。
例2建立3阶方阵A,判断A的元素是否为偶数。
>>A=[24,35,13;22,63,23;39,47,80]
A=243513
226323
394780
>>P=rem(A,2)==0//每个元素除以2的余数矩阵
P=100
100
001
3.逻辑运算
逻辑运算符:&(与)、|(或)和~(非)。
设参与逻辑运算的是两个标量a和b,那么运算规则为:
la&ba、b全为非零时,运算结果为1,否则为0。
la|ba、b中只要有一个为非零时,运算结果为1。
l~a当a为零时,运算结果为1;当a为非零时,运算结果为0。、
例:
>>3<4&6>5
>>~(9==1)
>>~9==1
算数优先级问题:算数运算的优先级最高,逻辑运算优先级最低,但逻辑非运算是单目运算,他的优先级比双目运算要高。
l若参与逻辑运算的是两个同型矩阵,那么将对矩阵相同位置上的元素按标量规则逐个进行运算,最终运算结果是一个与原矩阵同型的矩阵,其元素由1或0组成。
l若参与逻辑运算的一个是标量,一个是矩阵,那么将在标量与矩阵中的每个元素之间按标量规则逐个进行运算,最终运算结果是一个与矩阵同型的矩阵,其元素由1或0组成
例3水仙花数是指各位数字的立方之和等于该数本身的三位正整数。求全部水仙花数。
m=100:999;
m1=rem(m,10);//个位
m2=rem(fix(m/10),10);//十位
m3=fix(m/100);//百位
k=find(m==m1.*m1.*m1+m2.*m2.*m2+m3.*m3.*m3)//序号
k=
54271272308
s=m(k)
s=
153370371407
1.7字符串处理
分为数值型数据和字符型数据(字符串数据)
l字符串的表示
l字符串的操作
1.字符串的表示
在MATLAB中,字符串是用单引号括起来的字符序列。
>>xm='CentralSouthUniversity'
>>xm(1:3)//一个字符串当做行向量,每个元素对应一个字符。取1-3个字符
ans=Cen
若字符串中的字符含有单引号,则该单引号字符要用两个单引号来表示。
>>'I''mateacher.'
ans=I'mateacher.
建立多行字符串,形成字符串矩阵。
>>ch=['abcdef';'123456'];
>>ch(2,3)//第二行第三列的元素
ans=3
例题:
建立一个字符串向量,然后对该向量做如下处理:①取第1~5个字符组成的子字符串。②将字符串倒过来重新排列。③将字符串中的小写字母变成相应的大写字母,其余字符不变。④统计字符串中小写字母的个数。
>>ch='ABc123d4e56Fg9';
>>subch=ch(1:5)
subch=ABc12
>>revch=ch(end:-1:1)//步长为-1,最后一个字符到第一个字符
revch=9gF65e4d321cBA
>>k=find(ch>='a'&ch<='z')//find找字母位置
k=37913
>>ch(k)=ch(k)-('a'-'A')//小写转大写差32k为向量
ch=ABC123D4E56FG9
>>length(k)//统计向量k的个数
ans=4
2.字符串的操作
(1)字符串的执行
字符串的内容作为对应的matlab命令来执行。
>>t=pi;
>>m='[t,sin(t),cos(t)]';
>>y=eval(m)//调用eval函数向量赋给变量y
y=3.14160.0000-1.0000
2)字符串与数值之间的转换
abs和double函数都可以用来获取字符串矩阵所对应的ASCII码数值矩阵。
char函数可以把ASCII码矩阵转换为字符串矩阵。
>>s1='MATLAB';
>>a=abs(s1)
a=776584766566
>>char(a+32)
ans=matlab
(3)字符串的比较
字符串的比较有两种方法:利用关系运算符或字符串比较函数。
l关系运算符比较:两个字符串里的每个字符依次按ASCII值大小逐个进行比较,比较的结果是一个数值向量,向量中的元素要么是1,要么是0。(两个字符串拥有相同的长度时)
>>'www0'>='W123'
ans=1110
l字符串比较函数用于判断字符串是否相等,有4种比较方式,函数如下:
strcmp(s1,s2):用来比较字符串s1和s2是否相等,如果相等,返回结果为1,否则返回0。
strncmp(s1,s2,n):用来比较两个字符串前n个字符是否相等,如果相等,返回1,否则返回0。
strcmpi(s1,s2):在忽略字母大小写前提下,比较字符串s1和s2是否相等,如果相等,返回1,否则返回0。
strncmpi(s1,s2,n):在忽略字符串大小写前提下,比较两个字符串前n个字符是否相等,如果相等,返回1,否则返回0。
>>strcmp('www0','w123')
>>strncmpi('Www0','w123',1)
(4)字符串的查找与替换
findstr(s1,s2):返回短字符串在长字符串中的开始位置。
strrep(s1,s2,s3):将字符串s1中的所有子字符串s2替换为字符串s3。