clear:清屏。
format的介绍
变量——>内部函数——>程序文件——>当前文件夹下的程序文件——>文件搜索路径下文件夹的程序文件
如果定义变量时,请不要使用已有的特定函数名。
1.用path命令设置文件搜索路径。例如:
>>path(path,'e:\mat.work')
2.用对话框设置文件搜索路径。
clc:清除所有命令。
help elfun:查找一些简易的函数 将光标放置在不认识的函数上按下F1键可以查找该函数的含义
(1)如果在当前文件夹和搜索路径文件夹下建立了一个同名的M文件,那么在命令行窗口输入文件名时,执行哪个文件?
程序文件搜索顺序现在当前文件夹中搜索再在文件搜索路径中查找
(2)如果用户建立的文件即没有保存在文件夹下,也没有保存在文件搜索路径中,那么在命令行窗口输入文件名时,会出现什么信息?
出现错误信息
1.整型:
(1)无符号:8位(00000000~11111111)
(2)带符号:8位(10000000~01111111)
uint8函数将数值数据转换为无符号的8位整数,int8函数将数值数据转换为带符号8位整数
>>x=int8(129)x= 127 %%带符号的最大为127,所以转换时只能转成127>>x=uint8(129)x= 129 %%无符号的最大为255,所以转换后仍为129
2.浮点型:
(1)单精度:四个字节
(2)双精度:八个字节(精度更高)(数值数据默认为双精度)
使用single,将其他类型的数转换为单精度。
使用double,转换为双精度
>>class(4)ans=double %%调用class函数>>class(single(4))ans=single %%调用single函数
3.复数型:
复数类型包括实部与虚部两个部分,实部和虚部默认为双精度型,虚部单位用i或j表示
>>6+5ians=6.0000+5.0000i>>6+5jans=6.0000+5.0000i
使用real函数求实部,用imag函数求虚部
format命令的格式:format格式符
>>format long>>50/3ans=16.666666666666668>>format>>50/3ans=16.6667 %%format只影响数据输出格式不影响其定义
函数名(函数自变量的值)
函数的自变量规定为矩阵变量,当然也可以是标量,标量本身为矩阵的一种特例。
函数在运算时是将函数逐项作用与矩阵的每个元素上,所以最后运算的结果为一个与自变量同型的矩阵
>>A=[4,2;3,6]A= 4 2 3 6 %%创建矩阵A 2*2>>B=exp(A)B= 54.5982 7.3891 20.0855 403.4288 %%调用exp函数,求自然指数 B中数据均为A求自然指数所对应
1.三角函数有以弧度为单位的函数和以角度为单位的函数,如果是以角度为单位的函数就在函数名后加上"d",以示区别。
>>sin(pi/2)ans= 1>>sind(900ans= 1
2.abs函数可以求实数的绝对值,复数的模,字符串的ASCII值
>>abs(-4)ans= 4>>abs(3+4i)ans= 5>>abs('a')ans= 97
3.取整函数
round函数按照四舍五入规则取整
ceil函数为向上取整,取大于等于这个数的第一个整数
floor函数向下取整,取小于等于这个数的第一个整数
fix函数是固定取靠近0的数,舍去小数取整
4.字符长度
intmin(int8)=-128 :int8的最小范围为-128
intmax(int8)=127 : int8的最大范围为127
realmax:最大正浮点数(仅用于double,single)
realmin:最小
分别求一个三位正整数的个,十,百位
>>m=345>>m1=rem(m,10) %%相当于a%bm1= 5>>m2=rem(fix(m/10),10) %%fix函数取靠近0的整数m2= 4>>m3=fix(m/100)m3= 3
求【1,100】所有素数
MATLB提供了判断n是否为素数的函数isprime(n),当n为素数时返回1,否则返回0.
>>x=1:100; %%生成1到100间所有整数组成的向量x>>k=isprime(x); %%调用isprime函数>>k1=find(k); %%调用find函数(找出函数中非0数)>>p=x(k1) %%输出全部素数p= 1至15列 2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 16至25列 53 59 61 67 71 73 79 83 89 97
变量本质上为内存单元的一个抽象
在matlab中,变量名是以字母开头,后接字母,数字或下划线的字符序列,最多63个字符。
注意: (1)变量名区分大小写。 (2)标准函数名以及命令必须用小写字母
(1)变量=表达式
(2)表达式
由系统本身定义的变量 ans是默认赋值变量 i和j代表虚数单位 pi代表圆周率 NaN代表非数(想要裁掉的部分,将其的坐标数据设定为NaN)
inf:无穷大的缩写 在matlab中nan在不同情况下不同。例:(d) ~:1.代表非 2.代表忽略输出数据 对于(f)中'~'说明取反
a.在工作区按右键进行修改
b. who命令与whos命令
使用这两个命令,可以显示工作区中的内容
用于保存matlab工作区变量的文件叫做内存变量文件,其扩展名为.mat,也叫MAT文件
save命令:创建内存变量文件 load命令:装入内存变量文件
>>save mydata a x %%把a x存入mydata文件中,下次就可以使用>>load mydata %%将mydata文件中的内容存入此次工程中
(1)利用直接输入法建立矩阵:将矩阵的元素用中括号括起来,按矩阵行的顺序输入各元素,同一行的个元素之间用逗号或空格分隔,不同行的元素之间用分号间隔。 >>A=[1,2,3;4,5,6;7,8,9] A= 1 2 3 4 5 6 (2)利用已建立好的矩阵建立更大的矩阵:一个大矩阵可以由已经建立好的小矩阵拼接而成。 >>A=[1,2,3;4,5,6;7,8,9]; >>B=[-1,-2,-3;-4,-5,-6;-7,-8,-9]; >>C=[A,B;B,A] 可以用实部矩阵与虚部矩阵构成复数矩阵。 >>B=[1,2,3;4,5,6]; >>C=[6,7,8;9,10,11]; >>A=B+C*i A= 1.0000+6.0000i 2.0000+7.0000i ......
向量是矩阵特殊类型
2.冒号表达式 (1)格式 (2)linspace函数 3.结构矩阵和单元矩阵 (1)结构矩阵 格式为: 结构矩阵元素.成员名=表达式 >>a(1).x1=10;a(1).x2='liu';a(1).x3=[11,21;34,78]; %%给矩阵a1的第一二三号元素分别赋值 (2)单元矩阵 建立单元矩阵和一般矩阵相似,直接输入就可以了,只是单元矩阵用大括号括起来。 >>b={10,'liu',[11,21;34,78];12,'wang',[34,191;27,578];... 14,'cai',[13,890;67,231]}
A[3,2]表示的是A矩阵第3行第2列的元素。
>>A(3,2)=200 %%仅改变了该处元素的量
例子:%%不足时,自动补0,使矩阵完整,如例子
序号与下标一一对应的,以m*m矩阵A为例,矩阵元素A(i,j)的序号为(j-1)*m+i 矩阵元素的序号下标可以利用sub2ind和in2sub函数实现相互转换 sub2ind函数:将矩阵中指定元素的行,列下标转换成存储的序号。调用格式为: D=sub2ind(S,I,J) D:对应序号 S:行数和列数组成的向量 I:转换矩阵元素的行下标 J:转换矩阵元素的列下标 int2sub函数:将把矩阵元素的序号转换成对应的下标,其调用格式为: [I,J]=ind2sub(S,D) [I,J]:行下标 S:行数和列数组成的向量 D:序号 [3,3]:3行3列矩阵 1,3,5表示其所对应的下标(1,1) (3,1) (2,2) 利用冒号表达式获得子矩阵 end运算符:表示某一维末尾元素下标
利用空矩阵删除矩阵的元素
空矩阵指没有任何元素的矩阵
>>x=[]
x=
[]
x为空矩阵
改变矩阵的形状
reshape(A,m,n):在矩阵总元素保持不变的前提下,将矩阵重新排列成m*n的二维矩阵
注意:reshape函数只改变原矩阵的元素个数及其储存顺序
>> veac = [1 2 3 4 7 8 9 5 6]veac = 1 2 3 4 7 8 9 5 6 >> v = [ 1 0 1 1 0 1 0 0 1 ]v = 1 0 1 1 0 1 0 0 1 >> veac(v)数组索引必须为正整数或逻辑值。 >> v = logical([ 1 0 1 1 0 1 0 0 1 ])v = 1×9 logical 数组 1 0 1 1 0 1 0 0 1 >> veac(v)ans = 1 3 4 8 6
注意正常输入的向量并非逻辑向量,而是double型的因此要将其转化为logical型才可以进行数组索引
(1)基本算术运算
基本算术运算符:+,-,*,/(右除),\(左除)
MATLAB的算术运算是矩阵意义下进行的
单个数据的算术运算只是矩阵运算的特例
a.加减运算
两个矩阵同型,则运算时两矩阵的相应元素相加减。
若两个矩阵不同型,则MATLAB将给出错误信息。
b.乘法运算
矩阵A和B进行乘法运算,要求A的列与B的行一致,称A和B可乘,或A和B矩阵维数或大小相容
维数不同则错误
c.除法运算
在MATLAB中有:右除 '/' 和左除 ‘\’
若A矩阵是非奇异方阵,则A/B等效于B*inv(A),B\A等效于inv(A)*B.
对于矩阵来说,右除和左除表示两种不同的除数矩阵和被除数矩阵关系
b.乘方运算
一个矩阵的乘方运算可以表示为A^x,要求A为方阵,x为变量。
(2)点运算
点运算符: .* ; ,/ ; ,\ ; ,^
两个矩阵进行相关运算是指他们对应元素进行相关运算,要求两个矩阵同型
关系运算符:<,<=,>,>=,==,~=(不等于)
(1)当两个比较量是标量时,直接比较两个数的大小,若不成立则输出0,反之输出1。
(2)当参与比较的量时两个同型的矩阵时,比较是对两个矩阵相同位置的元素按标量关系运算规则逐个进行,最终的关系运算的结果是一个与原矩阵同型的矩阵,它由0和1构成。
(3)当参与比较的是标量和矩阵时,则把矩阵的每一个元素按标量关系运算规则逐个比较,最终的关系运算的结果是一个与原矩阵同型的矩阵,由0或1构成
逻辑运算符:& | ~(单目运算)
算术运算>逻辑运算
单目运算(运算时仅需要一个变量)>双目运算(运算时需要两个变量)
在matlab中,字符串使用单引号括起来的字符序列
>> xm='Njtech University'>> xm(1 , 3) %取字符串1到3的字符ans =Njt
若字符串中的字符含有单引号,则该单引号字符要用两个单引号表示。
>> 'I''m a teacher.'ans =I'm a teacher
建立多行字符串,形成字符串矩阵。
>> ch=['abcdef';'123456']; %两行的矩阵>> ch(2,3)ans= 3
例子 建立一个字符串向量,然后对该向量做如下处理: 1)取第1~5个字符组成的子字符串。 2)取字符串倒过来重新排列。 3)将字符串中的小写字母变成相应的大写字母,其余字符不变。 4)统计字符串中小写字母个数
>>ch='ABc123d4e56Fg9';>>subch=ch(1:5) %取出1~5位的字符subch=ABc12>>revch=ch(end:-1:1) %输出从最后一位开始,以-1为步长移动,到第一位结束revch=9gF65e4d321cBA>>k=find(ch>='a'&ch<='z') %查找出小写字母k= 3 7 9 13>>ch(k)=ch(k)-('a'-'A') %将小写字母加上32,通过ASCII改变该字母为大写ch=ABC123D4E56FG9>>length(k)ans= 4
(1)字符串的执行 格式:eval(s) s为字符串
>>t=pi;>>m='[t,sint(t),cos(t)]'; %m为字符串>>y=eval(m)y= 3.1416 0.0000 -1.0000
(2)字符串与数值之间的转换 1)abs和double函数都可以用来获取字符串矩阵所对应的ASCII码数值矩阵 2)char函数可以把ASCII码矩阵转换为字符串矩阵
>>s1='MATLAB';>>a=abs(s1)a= 77 65 84 76 65 66>> char(a+32)ans=matlab
(3)字符串的比较 字符串的比较有两种方式:利用关系运算符或字符串比较函数。 1) 关系运算符比较:两个字符串里的每个字符以此比较ASCII值的大小,比较的结果是一个数值向量,向量中的元素要不是1,要么是0. >>'www0'>='W123' ans= 1 1 1 0 2)字符串比较函数用于判断字符串是否相等,有四种比较方式,函数如下: strcmp(s1, s2):用于比较字符串s1、s2是否相等,如果相等,返回结果1,否则返回0; strncmp(s1, s2, n):用于比较字符串s1、s2前n个字符是否相等,如果相等,返回结果1,否则返回0; strcmpi(s1, s2):在忽略字母大小写的前提下,比较字符串s1、s2是否相等,如果相等,返回结果1,否则返回0; strncmpi(s1, s2, n):在忽略字母大小写的前提下,比较字符串s1、s2前n个字符是否相等,如果相等,返回结果1,否则返回0
s1 = 'matlab';s2 = 'matlab';strcmp(s1,s2)ans= 1s3 = 'matlab';s4 = 'mat';strncmp(s3,s4,3)ans= 1s5 = 'Matlab';s6 = 'MATLAB';strcmpi(s5,s6)ans= 1strncmpi(s5,s6,1)ans= 1
(4)字符串的查找与替换 findstr(s1,s2):返回短字符串在长字符串中的开始位置。 strrep(s1,s2,s3):将字符串s1中的所有字符串s2替换为字符串s3
>>p=findstr('This is a test!','is')p= 3 6>>p=findstr('is','This is a test!') %%空格也算一个字符p= 3 6>>result=strrep('This is a test!','test','class')result=This is a class!
免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删