【科学计算与MATLAB语言】MATLAB基础知识3(矩阵基本运算/字符串数据)

1 MATLAB基本运算

算术运算,关系运算,逻辑运算
MATLAB的运算都是针对矩阵而言的,既有矩阵意义下的运算,也有针对矩阵元素的运算。

1.1算数运算

1.基本算数运算

  • 基本算术运算符:+(加)、-(减)、*(乘)、/(右除)、(左除)、^(乘方)。
注意:
MATLAB的除法运算分为右除和左除。
MATLAB的算术运算是在矩阵意义下进行的。
单个数据的算术运算只是矩阵运算的一种特例。

(1)加减运算

  • 若两矩阵同型同为mxn的矩阵),则运算时两矩阵的相应元素相加减
  • 若两矩阵不同型,则MATLAB将给出错误信息(两个矩阵维数不匹配)。
  • 一个标量也可以和矩阵进行加减运算,这时把标量和矩阵的每一个元素进行加减运算。

(2)乘法运算

  • 矩阵A和B进行乘法运算(列乘行),要求A的列数B的行数相等,此时则称A、B矩阵是可乘的,或称A和B两矩阵维数和大小相容。
  • 如果两者的维数或大小不相容,则将给出错误信息,提示用户两个矩阵是不可乘的。

(3)除法运算

  • 在MATLAB中,有两种矩阵除法运算:右除/和左除\。
  • 如果A矩阵是非奇异方阵 1,则B/A等效于B*inv(A)(A的逆),A\B等效于inv(A)*B。
  • 对于矩阵来说,右除和左除表示两种不同的除数矩阵和被除数矩阵的关系。

(4)乘方运算
一个矩阵的乘方运算可以表示成A^x,要求A为方阵,x为标量。

(5)点运算

  • 点运算符:.*、./、.\和.^。
  • 两矩阵进行点运算是指它们的对应元素进行相关运算(行乘行),要求两矩阵同型

1.2关系运算

关系运算符通常用来表示条件

  • 关系运算符:<(小于)、<=(小于或等于)、>(大于)、>=(大于或等于)、==(等于)、~=(不等于)。
  • 当两个比较量是标量时,直接比较两数的大小。(若关系成立,关系表达式结果为1,否则为0)。
  • 当参与比较的量是两个同型的矩阵时,对两矩阵相同位置的元素按标量关系运算规则逐个进行,最终的关系运算的结果是一个与原矩阵同型的矩阵,它的元素由0或1组成。
  • 当参与比较的一个是标量,而另一个是矩阵时,则把标量与矩阵的每一个元素按标量关系运算规则逐个比较,最终的关系运算的结果是一个与原矩阵同型的矩阵,它的元素由0或1组成。

1.3逻辑运算

逻辑运算符:&(与)、|(或)和~(非)。
设参与逻辑运算的是两个标量a和b,那么运算规则为:

a&b
a、b全为非零时,运算结果为1,否则为0。
a|b
a、b中只要有一个为非零时,运算结果为1 。
~a
当a为零时,运算结果为1;当a为非零时,运算结果为0。

1.4总结

在算术运算、关系运算和逻辑运算中:

  • 算术运算的优先级最高逻辑运算优先级最低
  • 逻辑非运算是单目运算,也就是只需要一个操作数,它的优先级比双目运算要高。
~(9 == 1)
   &先做9==1,结果是0,对它做逻辑非运算,结果为1。
   
~9==1
   &先做非9运算,结果是0,0 ==1这个表达式的结果为0。
  • 若参与逻辑运算的是两个同型矩阵,那么将对矩阵相同位置上的元素按标量规则逐个进行运算,最终运算结果是一个与原矩阵同型的矩阵,其元素由1或0组成。
  • 若参与逻辑运算的一个是标量,一个是矩阵,那么将在标量与矩阵中的每个元素之间按标量规则逐个进行运算,最终运算结果是一个与矩阵同型的矩阵,其元素由1或0组成。

例:
水仙花数是指各位数字的立方之和等于该数本身的三位正整数。
求全部水仙花数。

>> m=100:999;%生成m向量
>> 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)%在向量m中找到水仙花位数赋给变量k(点乘:对应元素运算)
k =
54 271 272 308
%水仙花数的序号
>> s=m(k)
s =
153 370 371 407
%输出水仙花数

2字符串处理

2.1字符串表示

  • 在MATLAB中,字符串单引号 ’ ’ 括起来的字符序列。
>>xm='a beautiful girl'
xm=
    'a beautiful girl'
>>xm(1:3)  % 一个字符串为一个行向量,每个元素对应一个字符
ans =
     'a b'
  • 字符串中的字符含有单引号,则该单引号字符要用==两个单引号==来表示。
  • 建立多行字符串,形成字符串矩阵
>>ch=['abcdef';'123456']
ch=
    'abcdef'
    '123456'
%有两行字符串,形成了一个两行的矩阵。(要求各行字符数相等即列数相同)
当各行字符数不相等时,用空格调节各行长度,使它们的列数彼此相同。
>>ch(2,3)
ans =
     3

例:
建立一个字符串向量,然后对该向量做如下处理:
① 取第1~5个字符组成的子字符串。
② 将字符串倒过来重新排列。
③ 将字符串中的小写字母变成相应的大写字母,其余字符不变。
④ 统计字符串中小写字母的个数。

>>ch='ABc123d4e56Fg9';
>>subch=ch(1:5)  %取第1~5个字符组成的子字符串
subch =
        'ABc12'
>>revch=ch(end:-1:1) %从最后一个字符串到第一个字符串
revch =
       '9gF65e4d321cBA'
>>k=find(ch>='a'&ch<='z') %利用ASCII码找到小写字母位数
k=
    3     7     9    13
>>ch(k)=ch(k)-('a’-'A')  %ASCII码大写在前,小写在后,相差32
ch =
    'ABC123D4E56FG9'
>>length(k)
ans =
      4

2.2字符串操作函数

1.字符串执行

格式:
eval(s)
参数s为字符串,eval函数把参数 字符串中的内容作为对应的 MATLAB命令执行
t=pi;
m='[t,sin(t), cos(t)]';
y=eval (m)
y =
    3.1416    0.0000   -1.0000

2.字符串与数值之间的转换

字符串以ASCII码值的形式存储。

  • abs和double函数都可以用来获取字符串矩阵所对应的ASCII码数值矩阵。
  • char函数可以把ASCII码矩阵转换为字符串矩阵。
>>s1='MATLAB';
>a=abs(s1)
a=
   77    65    84    76    65    66
>>char(a+32)
ans =
      'matlab'

3.字符串的比较

字符串的比较有两种方法:利用关系运算符字符串比较函数

  • 关系运算符比较:两个字符串里的每个字符依次按ASCII值大小逐个进行比较,比较的结果是一个数值向量,向量中的元素要么是1,要么是0。
>> 'www0'>='w123'
ans =
     1   1   1   0
  • 字符串比较函数:用于判断字符串是否相等。

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')
ans =
     0
strncmpi('Www0','w123',1)
ans =
      1

4.字符串的查找与替换

findstr(s1,s2):返回短字符串在长字符串中的开始位置。

strrep(s1,s2,s3):将字符串s1中的所有子字符串s2替换为字符串s3。
在这里插入图片描述


  1. 1.矩阵是不是方阵(即行数和列数相等的矩阵,若行数和列数不相等,那就谈不上奇异矩阵和非奇异矩阵)。
    2.此矩阵的行列式|A|是否等于0,若等于0,称矩阵A为奇异矩阵;若不等于0,称矩阵A为非奇异矩阵↩︎

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值