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+5ians=6.0000+5.0000i>>6+5jans=6.0000+5.0000i

使用real函数求实部,用imag函数求虚部

2.数值数据输出格式

format命令的格式:format格式符

>>format long>>50/3ans=16.666666666666668>>format>>50/3ans=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(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:最小

(3)函数应用举例

分别求一个三位正整数的个,十,百位

>>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

三.变量及其操作

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构成

rem函数mod函数

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=   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!


免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删

QR Code
微信扫一扫,欢迎咨询~

联系我们
武汉格发信息技术有限公司
湖北省武汉市经开区科技园西路6号103孵化器
电话:155-2731-8020 座机:027-59821821
邮件:tanzw@gofarlic.com
Copyright © 2023 Gofarsoft Co.,Ltd. 保留所有权利
遇到许可问题?该如何解决!?
评估许可证实际采购量? 
不清楚软件许可证使用数据? 
收到软件厂商律师函!?  
想要少购买点许可证,节省费用? 
收到软件厂商侵权通告!?  
有正版license,但许可证不够用,需要新购? 
联系方式 155-2731-8020
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

手机不正确

公司不为空