目录
前言
matlab第一节:基础知识
一、matlab系统环境
1.matlab的界面
换行方式
2.设置当前文件夹
cd函数怎么建立
3.工具区窗口
4.简单的赋值应用
clear:清屏。
format的介绍
5. matlab的搜索路径
变量——>内部函数——>程序文件——>当前文件夹下的程序文件——>文件搜索路径下文件夹的程序文件
如果定义变量时,请不要使用已有的特定函数名。
如何设置文件搜索路径
1.用path命令设置文件搜索路径。例如:
>>path(path,'e:\mat.work')
2.用对话框设置文件搜索路径。
clc:清除所有命令。
help elfun:查找一些简易的函数
将光标放置在不认识的函数上按下F1键可以查找该函数的含义
思考:
(1)如果在当前文件夹和搜索路径文件夹下建立了一个同名的M文件,那么在命令行窗口输入文件名时,执行哪个文件?
程序文件搜索顺序现在当前文件夹中搜索再在文件搜索路径中查找
(2)如果用户建立的文件即没有保存在文件夹下,也没有保存在文件搜索路径中,那么在命令行窗口输入文件名时,会出现什么信息?
出现错误信息
二、matlab数值数据
1.数值数据类型的分类
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+5i
ans=6.0000+5.0000i
>>6+5j
ans=6.0000+5.0000i
使用real函数求实部,用imag函数求虚部
2.数值数据输出格式
format命令的格式:format格式符
>>format long
>>50/3
ans=16.666666666666668
>>format
>>50/3
ans=16.6667 %%format只影响数据输出格式不影响其定义
3.常用数学函数
(1)函数的调用格式为:
函数名(函数自变量的值)
函数的自变量规定为矩阵变量,当然也可以是标量,标量本身为矩阵的一种特例。
函数在运算时是将函数逐项作用与矩阵的每个元素上,所以最后运算的结果为一个与自变量同型的矩阵
>>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求自然指数所对应
(2)常用函数的应用
1.三角函数有以弧度为单位的函数和以角度为单位的函数,如果是以角度为单位的函数就在函数名后加上"d",以示区别。
>>sin(pi/2)
ans=
1
>>sind(900
ans=
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:最小
(3)函数应用举例
分别求一个三位正整数的个,十,百位
>>m=345
>>m1=rem(m,10) %%相当于a%b
m1=
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
三.变量及其操作
1.变量与赋值语句
变量本质上为内存单元的一个抽象
在matlab中,变量名是以字母开头,后接字母,数字或下划线的字符序列,最多63个字符。
注意:
(1)变量名区分大小写。
(2)标准函数名以及命令必须用小写字母
2.赋值语句
(1)变量=表达式
(2)表达式
3.预定义变量
由系统本身定义的变量
ans是默认赋值变量
i和j代表虚数单位
pi代表圆周率
NaN代表非数(想要裁掉的部分,将其的坐标数据设定为NaN)
inf:无穷大的缩写
在matlab中nan在不同情况下不同。例:(d)
~:1.代表非 2.代表忽略输出数据
对于(f)中'~'说明取反
4.变量的管理
(1)内存变量的删除与修改
a.在工作区按右键进行修改
b. who命令与whos命令
使用这两个命令,可以显示工作区中的内容
(2)内存变量文件
用于保存matlab工作区变量的文件叫做内存变量文件,其扩展名为.mat,也叫MAT文件
save命令:创建内存变量文件
load命令:装入内存变量文件
>>save mydata a x %%把a x存入mydata文件中,下次就可以使用
>>load mydata %%将mydata文件中的内容存入此次工程中
四. matlab矩阵的表示
1.矩阵的建立
(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]}
五.矩阵元素的引用
1.矩阵元素的引用方式
(1)通过下标来引用矩阵的元素
A[3,2]表示的是A矩阵第3行第2列的元素。
>>A(3,2)=200 %%仅改变了该处元素的量
例子:%%不足时,自动补0,使矩阵完整,如例子
(2)通过序号来引用
序号与下标一一对应的,以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函数只改变原矩阵的元素个数及其储存顺序
(3)利用逻辑符号来引用
>> 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型才可以进行数组索引
六.MATLAB基本运算
1.算术运算
(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)点运算
点运算符: .* ; ,/ ; ,\ ; ,^
两个矩阵进行相关运算是指他们对应元素进行相关运算,要求两个矩阵同型
2.关系运算
关系运算符:<,<=,>,>=,==,~=(不等于)
(1)当两个比较量是标量时,直接比较两个数的大小,若不成立则输出0,反之输出1。
(2)当参与比较的量时两个同型的矩阵时,比较是对两个矩阵相同位置的元素按标量关系运算规则逐个进行,最终的关系运算的结果是一个与原矩阵同型的矩阵,它由0和1构成。
(3)当参与比较的是标量和矩阵时,则把矩阵的每一个元素按标量关系运算规则逐个比较,最终的关系运算的结果是一个与原矩阵同型的矩阵,由0或1构成
3.逻辑运算
逻辑运算符:& | ~(单目运算)
算术运算>逻辑运算
单目运算(运算时仅需要一个变量)>双目运算(运算时需要两个变量)
七.字符串处理
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
2.字符串的操作
(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=
1
s3 = 'matlab';
s4 = 'mat';
strncmp(s3,s4,3)
ans=
1
s5 = 'Matlab';
s6 = 'MATLAB';
strcmpi(s5,s6)
ans=
1
strncmpi(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!
总结
matlab基础知识的概数