目录
导入
1.什么是科学计算?
科学计算是研究工程技术问题以及其他应用问题的近似求解方法,并在计算机上进行编程实现的一门课程,它既有数学理论上的抽象性和严谨性,又有程序设计技术上的实用性和实践性。
2.什么是MATLAB?
MATLAB是美国MathWorks公司出品的商业数学软件,用于数据分析、无线通信、深度学习、与计算机视觉、信号处理、量化金融与风险管理、机器人,控制系统等领域。
3.科学计算与MATLAB的关系
4.安装MATLAB
这里是某佬的安装链接:R2020a安装,按照操作来应该没问题,安装的是ployspace,matlab程序在bin文件中,注意如果忘了安装R2020a的位置或者找不到Ployspace文件夹,可以主盘的文件夹programFile中寻找一下,文件位置参考下图路径:
1.MATLAB数值数据
1.1数值数据类型的分类
- 整型
- 浮点型
- 复数型
1.1.1整型:
(1) 无符号整数:无符号8位整数、无符号16位整数、无符号36位整数、无符号64位整数。
(2)带符号整数:待符号8位整数、带符号16位整数、带符号36位整数、带符号64位整数。
(3)无符号8位整数数据范围:00000000~11111111(2^8-1)
(4)带符号8位整数数据范围:10000000~01111111(-2^7~2^7-1)
补充:有符号整型是一般是指带有正负号的整型,无符号整型是指没有正负号的整型,也就是只包含 0 和 正数 的整数。
如下是对(3)、(4)数据范围的验证:
>>x = int8(129)
x =
127
>>x = uint8(129)
x =
129
1.1.2浮点型:
(1)与整型不同,浮点型是指可以有小数点及以后数据部分的数据。
(2)Matlab 中提供了两种浮点数类型,单精度浮点型与双精度浮点型,前者用single表示,后者用double表示。
类型 | 函数 | 范围 | 字宽 | 数据位 |
0~22 位 → 小数部分 | ||||
单精度浮点型 | single | -3.4028e+38 ~ 3.4028e+38 | 4字节 | 23~30位 → 指数部分 |
31位 → 符号位 |
类型 | 函数 | 数据范围 | 字宽 | 数据位 |
0~51 位 → 小数部分 | ||||
双精度浮点型 | double | -1.7977e+308 ~ 1.7977e+308 | 8字节 | 52~62位 → 指数部分 |
63位 → 符号位 |
1.1.2复数型:
(1)复数数据包括实部和虚部两个部分,实部和虚部默认为双精度型,虚部单位用i或j表示。
(2)real函数:求复数的实部。
(3)imag函数:求复数的虚部。
如下是(2)、(3)的试用:
>> 6+5i
ans =
6.0000 + 5.0000i
>>real(ans)
ans =
6.0000
>> 6 +8i
ans =
6.0000 + 8.0000i
>>imag(ans)
ans =
8
1.2数值数据的输出格式
format命令的格式:
format 格式符
>> format long
>> 50/3
ans =
16.666666666666668
>>format
>> 50/3
ans = 16.6667
1.3常用数学函数
函数调用格式:函数名(函数自变量的值)
函数名 | 功能 | 使用 |
exp( ) | 以e为底的指数函数 | >>A = exp(2) A = 7.3891 |
sqrt( ) | 求平方根 | >> A = sqrt(4) A = 2 |
log( ) | 以e为底的对数函数 | >> A = log(e^2) A = 2 |
log10( ) | 以10为底的对数函数 | >> A = log (100) A = 2 |
abs( ) | 求绝对值 | >>A = abs(-1) A = 1 |
mod(m,n) | 求m/n的余数 | >>A = mod(10,3) A = 1 |
ceil( ) | 向上取整 | >> A = ceil(1.1) A = 2 |
floor( ) | 向下取整 | >> A = ceil(1.8) A = 1 |
round( ) | 四舍五入 | >> A = round(1.7) A = 2 |
fix( ) | 取整(删除小数位) | >> A = fix(2.2) A = 2 |
rem(m,n) | 求m/n的余数 | >>A = mod(10,3) A = 1 |
sin( ) | 正弦函数 | >> A = sin(pi) A = 1 |
补充: 圆周率用pi表示,三角函数有两种,就拿正弦函数来说,有sin( )和sind( ),sin( )函数传入的参数是弧度,sind()传入的参数是角度,例如:sin(pi) = sind(90) = 1
2.变量及其操作
2.1变量与赋值语句
(1)MATLAB中变量名以字母开头,后接字母、数字或下划线的字符序列,最多63个字符,区分大小写,关键字和函数名不能作为变量名。
(2)赋值操作:变量名 = 表达式
补充:
(1)如果没有提前定义变量的话,可以在使用时可直接进行赋值使用。
(2)Matlab变量的特点:不需事先声明,也不需指定变量类型,Matlab自动根据所赋予变量的值或对变量所进行的操作来确定变量的类型;在赋值过程中,如果变量已经存在,Matlab会用新值代替旧值,并以新的变量类型代替旧的变量类型。
2.2预定义变量
- ans是默认赋值变量
- i和j代表虚数单位
- pi代表圆周率
- NaN代表非数
2.3变量的管理
(1)内存变量可用来存储数据,定义内存变量时需为它取名并赋初值,内存变量建立后存储于内存中。
(2)用于保存MATLAB工作区变量的文件叫做内存变量文件,其扩展名为.mat,也叫MAT文件。
(3)有关命令:who命令,whos命令,save命令,load命令。
——who命令:列出工作区中的变量
——whos命令:列出工作区中的变量及大小和类型
——who与whos命令展示
——save命令:创建内存变量文件
——load命令:转入内存变量文件
如要保存mydata文件下的变量a和x,则是用save命令,要在别的文件使用保存的变量则用load命令。
>>save mydata a x
>>load mydata
3.矩阵的表示
- 矩阵建立
- 冒号表达式
- 结构矩阵和单元矩阵
3.1矩阵的建立
3.1.1矩阵建立
(1)直接建立:将矩阵的元素用中括号括起来,按矩阵行的顺序输入个元素,同一行的个元素之间用逗号或空格分隔,不同行的元素之间用分号分隔。
>> A = [1,2,3;4,5,6;7,8,9]
A =
1 2 3
4 5 6
7 8 9
(2)利用一建好的矩阵建立更大的矩阵
>> A = [1,2,3;4,5,6]
>> B =[7,8,9;11,12,13]
>> C = [A;B]
C =
1 2 3 7 8 9
4 5 6 11 12 13
(3)可以用实部矩阵和虚部矩阵构成复数矩阵
>>A = [1,2,3;4,5,6]
>>B =[7,8,9;10,11,12]
>>C = A +i*B
C =
1.0000 + 7.0000i 2.0000 + 8.0000i 3.0000 + 9.0000i
4.0000 + 10.0000i 5.0000 + 11.0000i 6.0000 + 12.0000i
3.1.2.冒号表达式
(1)格式:: e1:e2:e3——e1:初始值;e2:步长,默认为1;e3:终止值。
>> a = 0:1:5
a =
0 1 2 3 4 5
>> b = 0:5
b =
0 1 2 3 4 5
>> c = 0:2:6
c =
0 2 4 6
(2)f格式:linspace(a,b,n)——a:第一个元素;b最后元素;n元素总数,省略时自动产生100个元素。
>> a = linspace(0,pi,6)
a =
0 0.6283 1.2566 1.8850 2.5133 3.1416
3.1.3结构矩阵和单元矩阵
(1)结构矩阵:由结构数据构成的矩阵就是结构矩阵,结构矩阵里的每一个元素就是结构矩阵数据类型,格式为: 结构矩阵元素.成员名 =表达式
>>a(1).x1 = 10;a(1).x2 ='zhang';a(1).x3 = [1,2,3]
>>a(2).x1 = 11;a(2).x2 ='guan';a(2).x3 = [4,5,6]
(2)单元矩阵:和建立矩阵相似,唯一不同使用大括号括起来。
>>a ={10,'guan',[1,2,3];12,'zhang',[4,5,6];14,'liu',[7,8,9]}
a =
[10] 'guan' [1x1 double]
[12] 'zhang' [1x1 double]
[14] 'liu' [1x1 double]
3.2矩阵元素的引用
(1)通过下标引用矩阵元素,例如A(m,n)表示矩阵A第2行2列的元素,如果给出的行或列下标大于原来矩阵的行数和列数,则自动扩展,并将没有赋值的元素置零。
>>A = [1 2 3;4 5 6]
A(2,3) =
6
>> A(4,5) = 10
A =
1 2 3 0 0
4 5 6 0 0
0 0 0 0 0
0 0 0 0 10
(2)通过序号引用元素:在MATLAB中,矩阵元素按列存储,即首先存储矩阵第一列元素,然后存储第二列元素,.....,一直到矩阵的最后一列元素,矩阵元素的序号就是矩阵元素在内存中的排列顺序。
>> A =[1 2 3; 4 5 6]
A =
1 2 3
4 5 6
>>A(3)
ans =
2
(3)利用冒号表达式获得子矩阵,子矩阵是指由矩阵中的一部分元素构成的矩阵。
A(i,:) | 第i行全部元素 |
A(:,j) | 第j列的全部元素 |
A(i:i+m,k:k+m) | 第i~i+m行内且在第k~k+m列中的所有元素 |
A(i:i+m,:) | 第i~i+m行的全部元素 |
(4)A(:) ——将矩阵A的每一列元素堆叠起来,成为一个列向量
>> A = [1,2,3;4,5,6]
>> B = A(:)
B =
1
2
3
4
5
6
(5)end运算符:表示某一维的末尾元素下标
>> A =[1,2,3;4,5,6;,7,8,9]
>> A(end,:)
ans =
7 8 9
>>A(2,4:end)
ans =
4 5 6
4.字符串
4.1字符串表示
字符串是用单引号括起来字符序列,若字符串中的字符含有单引号,则该单引号字符,要用两个单引号来表示。
>> x = ‘i like dogs’
ans =
i like dogs
>>ch = ‘I’’m a student’
ans =
I’m a student
4.2字符串操作
4.2.1 eval函数
eval(expression)
计算expression
中的 MATLAB代码。
>>x = pi
>> ch = ‘sinx’
>> a = eval(ch)
a =
1
4.2.2其他函数
如查找字符,比较字符串,字符串转大小写或数字等函数,和其他变成语言的语法类似,查阅即用。