视频课程参考:https://www.bilibili.com/video/BV19J411W7Ta
数值问题-->求解算法-->程序实现-->结果分析
MATLAB 功能 :数值计算,符号计算,图形绘制,程序流程绘制,工具箱
数值计算方法:迭代法,二分法,割线法
1.1 MATLAB系统环境
1.窗口
(1)主窗口(2)命令行窗口 >>命令提示符 …续行符 (3)当前文件夹窗口
设置当前文件夹?1.在当前文件夹工具栏或者当前文件夹窗口中选择某文件夹为当前文件夹 2.使用cd命令
先建立文件夹,再将当前文件夹设置为当前文件夹
(4)工作区窗口 变量的显示,保存,删除等
2.MATLAB的搜索路径
变量->内部函数->程序文件->当前文件夹下的程序文件->文件搜索路径文件夹中的程序文件
>> clear >> x=sin(1) x = 0.8415 >> sin=[1,2,3,4,5] 建立一个与正弦函数同名的变量 sin = 1 2 3 4 5 >> x=sin(1) 说明这个变量是引用sin的第一个元素 说明MATLAB的变量名优先 r |
如何设置文件搜索路径?
1.用Path命令设置文件搜索路径 e.g. >>path(path,'e\work)
2.用对话框设置文件搜索路径
1.2MATLAB数值数据
1.数据类型的分类
(1)整型:无符号整数,带符号整数
e.g. 无符号9位整数数据范围:00000000~11111111 (0~)
带符号8位整数数据范围:10000000~01111111 (-)
MATLAB提供了数据类型转换函数实现数据类型的转换,例如, uint8函数将数值数据转换为无符号8位整数,int8函数将数值数据转换为带符号8位整数。
(2)浮点型:单精度、双精度
单精度型实数在内存中占用4个字节,双精度型实数在内存中占用8个字节
single函数:其他类型的数据转换为单精度型
double函数:其他类型的数据转换为双精度型
>> class(4) ans = 'double' >> class(single(4)) ans = 'single' |
(3)复数型 : 实部,虚部 实部和虚部默认为双精度型,虚数单位用i或j来表示
real函数:求复数的实部
imag函数:求复数的虚部
2.数值数据的输出格式
fomat命令的格式:format 格式符 fomat命令只影响数据输出格式,而不影响数据的计算和存储
>> format long >> 50/3 ans = 16.666666666666668 >> format 默认short >> 50/3 ans = 16.6667 |
3.常用数学函数
(1)函数的调用格式: 函数名(函数自变量的值)
函数的自变量规定为矩阵变量,当然也可是标量,标量本身是矩阵的一种特例。
函数在运算时是将函数逐项作用于矩阵的每个元素上,所有最后运算的结果就是一个与自变量同型的矩阵。
>> A=[4,2;3,6] 矩阵A,2行2列 A = 4 2 3 6 >> B=exp(A) 调用exp函数,求自然指数,自变量为矩阵A B = 54.5982 7.3891 B也是一个矩阵,每一个元素都是A对应元素求自然指数得来的 20.0855 403.4288 |
(2)常用函数的应用
1️⃣三角函数有以弧度为单位的函数和以角度为单位的函数,如果是以角度为单位的函数就在函数名后面加“d”,以示区别。
>> sin(pi/2) ans = 1 >> sind(90) ans = 1 |
2️⃣abs函数可以求实数的绝对值、复数的模、字符串的ASCII码值
>> abs(-4) ans = 4 >> abs(3+4i) ans = 5 >> abs('a') ans = 97 |
3️⃣用于取整的函数:fix floor ceil round
round:按照四舍五入的规则取整
ceil:向上取整,取大于等于这个数的第一个整数
floor:向下取整,取小于等于这个数的第一个整数
fix:固定取靠近0的那个整数,即舍去小数取整
Q.求三位正整数的个位数字、十位数字、百位数字 >> m=345 m = 345 >> m1=rem(m,10) m除10的余数赋值给m1 m1 = 5 >> m2=rem(fix(m/10),10) 先对345除10的结果取整,为34,再34除10的余数 m2 = 4 >> m3=fix(m/100) m3 = 3 |
求1~100区间所有的素数 matlab提供了一个判断n是否为素数的函数 isprime(n),当n是素数时返回1,否则返回0. >> x=1:100 x = 1 至 15 列 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 至 30 列 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 至 45 列 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 至 60 列 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 至 75 列 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 至 90 列 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 至 100 列 91 92 93 94 95 96 97 98 99 100 >> k=isprime(x) 调用函数,要么为1要么为0 k = 1×100 logical 数组 1 至 22 列 0 1 1 0 1 0 1 0 0 0 1 0 1 0 0 0 1 0 1 0 0 0 23 至 44 列 1 0 0 0 0 0 1 0 1 0 0 0 0 0 1 0 0 0 1 0 1 0 45 至 66 列 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 1 0 0 0 0 0 67 至 88 列 1 0 0 0 1 0 1 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 89 至 100 列 1 0 0 0 0 0 0 0 1 0 0 0 >> k1=find(k) k1向量中的元素为k向量中非0元素的序号 k1 = 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 >> 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.3 变量及其操作
1.变量与赋值语句
变量:内存单元的抽象,通过一个变量名访问内存单元。
在MATLAB中,变量名是以字母开头,后接字母、数字或下划线的字符序列,最后63字符。区分大小写。
标准函数名以及命令名必须用小写字母。
赋值语句两种格式: 变量=表达式
表达式
Q. >> x=sqrt(7)-2i x = 2.6458 - 2.0000i >> y=exp(pi/2) y = 4.8105 >> z=(5+cosd(47))/(1+abs(x-y)) z = 1.4395 |
2.预定义变量
预定义变量是由系统本身定义的变量。
ans是默认赋值变量
i和j代表虚数单位
pi代表圆周率
NaN代表非数(作图时需要裁掉部分,把需要裁掉的部分的坐标设为NaN即可)
3.变量的管理
(1)内存变量的删除与修改 (工作区窗口修改)
who命令和whos命令 显示已经驻留的变量名清单
(2)内存变量文件
用于保存MATLAB工作区变量的文件叫做内存变量文件,其扩展名为.mat,也叫MAT文件。(保存数据的一种二进制格式文件)
save命令:创建内存变量文件。load命令:装入内存变量文件。
>> save mydata a x 将变量a和x保存在mydata.mat文件中
>>load mydata
1.4MATLAB的矩阵表示
1.矩阵的建立
2.结构矩阵与单元矩阵
(1)结构矩阵:格式:结构矩阵元素.成员名=表达式
(2)单元矩阵:建立单元矩阵和一般矩阵相似,直接输入就可以了,知识单元矩阵元素用大括号括起来。
1.5矩阵元素的引用
1.(1)通过下标来引用矩阵的元素
A(3,2)表示A矩阵第三行第二列的元素
(2)通过序号引用
矩阵元素按列存储,首先存储矩阵的第一列元素,然后存储第二列元素,…,一直到矩阵的最后一列元素。
矩阵元素的序号就是矩阵元素在内存中的排列顺序。
2.利用冒号表达式获得子矩阵
子矩阵是由矩阵中的一部分元素构成的矩阵。
3.利用空矩阵删除矩阵的元素
4.改变矩阵的形状
1.6 MATLAB基本运算
1.算术运算
(1)基本算术运算(MATLAB的算术运算是在矩阵意义下进行的,单个数据的算术运算只是矩阵运算的一种特例)
基本算术运算+,-,,^(乘方),/(右除),\(左除)
加减:要求矩阵同型,标量也可跟矩阵的每一个元素进行加减(不同型,给出错误信息)
乘法:A的列数等于B的行数(不相容给出错误信息)
除法:A为非奇异矩阵,B/A等效于B* inv(A),B\A等效于inv(A)*B
乘方:A^x,要求A为矩阵,x为标量
(2)点运算
(3)关系运算
< ,<=,>, >=, ==(等于), ~=(不等于)
关系成立,结果为1;不成立,为0
当参与比较的两是两个同型矩阵时,是对相同位置的元素按标量关系运算规则逐个进行,最终结果是一个与原矩阵同型的矩阵,它的元素由0、1组成。
(4)逻辑运算
运算优先级:算术运算>关系运算>逻辑运算,但逻辑非运算时单运算,它比双目运算优先级高
2.字符串处理
(1)字符串是用单引号括起来的字符序列。
(2)若字符串中的字符含有单引号,则该单引号字符要用两个单引号表示。
(3)可建立多行字符串,形成字符串矩阵。
(4)字符串的执行:eval(s)
(5)字符串与数值之间的转换:
abs和double函数都可以获取字符串矩阵所对应的ASCII码数值矩阵,char函数可以把ASCII码数值矩阵转换为字符串矩阵。
(6)字符串的比较:可以利用关系运算符或者字符串比较函数。
函数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。
(7)字符串的查找与替换
findstr(s1,s2)返回短字符串在长字符串中的开始位置(s1,s2可互换)
strrep(s1,s2,s3)将字符串s1中的所有子字符串s2替换为字符串s3