中国大学MOOC 科学计算与MATLAB语言(点击此处跳转)
1.1 MATLAB系统环境
如何设置当前文件夹
- 在“当前文件夹工具栏”或“当前文件夹窗口”中选择某文件夹为当前文件夹。
- 使用cd命令。例如
>> cd e:\work
注意:一定要先建立文件夹,再将这个文件夹设为当前文件夹。
如何设置文件搜索路径
- 用 path 命令设置文件搜素路径。例如
>> path(path,'e:\work')
- 用对话框设置文件搜索路径。
1.2 MATLAB数值数据
MATLAB数值数据的类型大致可以分为 3 种,分别为整型、浮点型、复型。
整型
- 按照有无符号可以分为无符号整数和带符号整数。
- 按照数据范围可以分为8位、16位、32位和64位整数。
>> x=int8(129) #带符号8位整型数据的最大值是127
x =
127
>> x=uint8(129) #无符号8位整型数据的最大值是255
x =
129
注意:
1.MATLAB 默认情况下以双精度浮点形式 (double) 存储数值数据。
2.如果要转换为整数的数值带有小数部分或者超出了数据范围,映射到最近的端点。
3.同时涉及整数和浮点数的算术运算始终生成整数数据类型。
4.MATLAB整型转换函数(以带符号8位整数为例)为 int8,切记不是 int!!!。
浮点型
- single函数:将其他类型的数据转换为单精度型。
- double函数:将其他类型的数据转换为双精度型。
>> class(4) #class 为 MATLAB类型判断函数
ans =
double #MATLAB 默认情况下以双精度浮点形式 (double) 存储数值数据
>> class(single(4))
ans =
single
复型
复型数据包括实部和虚部两个部分,实部和虚部默认为双精度型,虚数单位用 i 或 j 来表示。
- real函数:求复数的实部。
- imag函数:求复数的虚部。
>> 6+5i
ans =
6.0000 + 5.0000i
>> 6+5j
ans =
6.0000 + 5.0000i
数值数据的输出格式
format命令的格式format 格式符
>> format long
>> 50/3
ans =
16.666666666666668
>> format
>> 50/3
ans =
16.6667
注意:format命令只影响数据输出格式,而不影响数据的计算和存储。
常用数学函数
函数的调用格式为函数名(函数自变量的值)
函数在运算时是将函数逐项作用于矩阵的每个元素上,所以最后运算的结果就是一个与自变量同型的矩阵
指数函数
>> A=[4,2;3,6]
A =
4 2
3 6
>> B=exp(A)
B =
54.5982 7.3891
20.0855 403.4288
三角函数
三角函数有以弧度为单位的函数和以角度为单位的函数,如果是以角度为单位的函数就在函数名后面加“d”,以示区别。
>> sin(pi/2)
ans =
1
>> sind(90)
ans =
1
abs函数
abs函数可以求实数的绝对值、复数的模、字符串的ASCII码值。
>> abs(-4)
ans =
4
>> abs(3+4i)
ans =
5
>> abs('a')
ans =
97
取整函数
- round函数:按照四舍五入的规则来取整。
- floor函数:向上取整,取大于等于这个数的第一个整数。
- ceil函数:向下取整,取小于等于这个数的第一个整数。
- fix函数:固定取靠近 0 的那个整数,也就是舍去小数取整。
>> round(4.7)
ans =
5
>> fix(-3.2)
ans =
-3
>> floor(3.6)
ans =
3
>> ceil(-3.8)
ans =
-3
取余函数
rem(a,b) 和 mod(a,b) 都返回 a 除以 b 的余数,两者的联系和区别如下:
- 当 a 和 b 的符号一致时,两个函数结果相同;
- 当 a 和 b 的符号不同时,rem函数结果的符号和被除数 a 一致,而mod函数和除数 b 一致。
\(rem(a, b) = a - b .* fix(a./b)\)
\(mod(a, b) = a - b .* floor(a./b)\)
注意:
1.rem函数遵从 rem(a,0) 是 NaN 的约定
2.mod函数遵从 mod(a,0) 返回 a 的约定
#分别求一个三位正整数的个位数字、十位数字和百位数字。
>> m=345;
>> m1=rem(m,10)
m1 =
5
>> m2=rem(fix(m/10),10)
m2 =
4
>> m3=fix(m/100)
m3 =
3
质数/素数
find函数详细用法(点击跳转官方文档)
#求[1,100]区间的所有素数
>> x=1:100;
>> k=isprime(x); #返回与 X 大小相同的逻辑数组。如果x(i) 为质数,则 k(i) 的值为 true;否则,值为 false。
>> k1=find(k); #返回非零元素的索引
>> p=x(k1)
p =
1 至 13 列
2 3 5 7 11 13 17 19 23 29 31 37 41
14 至 25 列
43 47 53 59 61 67 71 73 79 83 89 97
1.3 变量及其操作
1.在MATLAB中,变量名是以字母开头(区别于C语言的标识符),后接字母、数字或下画线的字符序列,最多63个字符。
2.变量名区分字母的大小写。
3.标准函数名以及命令名一般用小写字母。
预定义变量
预定义变量是在MATLAB工作空间中驻留,由系统本身定义的变量。
ans 是默认赋值变量
i 和 j 代表虚数单位
pi 代表圆周率
NaN 代表非数
变量的管理
who命令与whos命令
内存变量文件
用于保存MATLAB工作区变量的文件叫做内存变量文件,其扩展名为.mat,也叫MAT文件。
- save命令:创建内存变量文件。
- load命令:装入内存变量文件。
>> save mydata a x #将变量 a 和 x 存入 mydata.mat 文件
>> load mydata #将 mydata.mat 文件中的所有变量加载至工作区。
1.4 MATLAB矩阵的表示
矩阵的建立
#利用直接输入法建立矩阵
>> A=[1,2,3;4,5,6;7,8,9]
A =
1 2 3
4 5 6
7 8 9
#利用已建好的矩阵建立更大的矩阵
>> 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]
C =
1 2 3 -1 -2 -3
4 5 6 -4 -5 -6
7 8 9 -7 -8 -9
-1 -2 -3 1 2 3
-4 -5 -6 4 5 6
-7 -8 -9 7 8 9
#可以用实部矩阵和虚部矩阵构成复数矩阵
>>B=[1,2,3;4,5,6];
>>C=[6,7,8;9,10,11];
>>A=B+i*C
A =
1.0000 + 6.0000i 2.0000 + 7.0000i 3.0000 + 8.0000i
4.0000 + 9.0000i 5.0000 +10.0000i 6.0000 +11.0000i
冒号表达式
\[e1:e2:e3 \]其中,e1 表示初始值,e2 表示步长,e3 表示终止值。
>> t=0:1:5
t =
0 1 2 3 4 5
省略步长 e2,则步长为 1。例如,t=0:5 与 t=0:1:5 等价。
\[linspace(a,b,n) \]
其中,a 表示第一个元素,b 表示最后一个元素,n 表示元素总数
>> x=linspace(0,pi,6)
x =
0 0.6283 1.2566 1.8850 2.5133 3.1416
当 n 省略时,自动产生 100 个元素。
结构矩阵和单元矩阵
结构矩阵
由结构数据构成的矩阵就是结构矩阵,结构矩阵里的每个元素就是结构数据类型。
建立结构矩阵的格式为结构矩阵元素.成员名=表达式
>> a(1).x1=10; a(1).x2='liu'; a(1).x3=[11,21;34,78];
>> a(2).x1=12; a(2).x2='wang'; a(2).x3=[34,191;27,578];
>> a(3).x1=14; a(3).x2='cai'; a(3).x3=[13,890;67,231];
单元矩阵
建立单元矩阵和一般矩阵相似,直接输入就可以了,只是单元矩阵元素用大括号括起来。
>> b= {10,'liu',[11,21;34,78];12,'wang',[34,191;27,578];...
14,'cai',[13,890;67,231]}
b =
[10] 'liu' [2x2 double]
[12] 'wang' [2x2 double]
[14] 'cai' [2x2 double]
1.5 矩阵元素的引用
矩阵元素的引用方式
通过下标来引用矩阵元素
>> A=[1,2,3;4,5,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
注意:
1.如果给出的行下标或列下标大于原来矩阵的行数和列数,那么MATLAB将自动扩展原来的矩阵,并将扩展后没有赋值的矩阵元素置为0。
2.引用元素和建立结构矩阵时,会自动扩展,但建立一般矩阵或单元矩阵时,还要遵循串联数组的维数一致性。
3.结构矩阵不同元素的相同成员可以不是一种数据类型,但是单元矩阵对应位置的元素必须是同一种数据类型。
通过序号来引用
- 在MATLAB中,矩阵元素按列存储,即首先存储矩阵的第一列元素,然后存储第二列元素,…,一直到矩阵的最后一列元素。
- 矩阵元素的序号就是矩阵元素在内存中的排列顺序。
>> A=[1,2,3;4,5,6]
A =
1 2 3
4 5 6
>> A(3)
ans =
2
序号与下标是一一对应的,以 \(m×n\) 矩阵 \(A\) 为例,矩阵元素 \(A(i,j)\) 的序号为 \((j-1)×m+i\)
sub2ind函数:将矩阵中指定元素的行、列下标转换成存储的序号。
调用格式为
其中,D 表示序号,S 表示行数和列数组成的向量,I 表示转换矩阵的行下标,J 表示转换矩阵的列下标。
>> A=[1:3;4:6]
A =
1 2 3
4 5 6
>> D=sub2ind(size(A),[1,2;2,2],[1,1;3,2]) #size函数可以获取指定矩阵行数和列数组成的行向量
D =
1 2
6 4
ind2sub函数:将把矩阵元素的序号转换成对应的下标。
调用格式为
其中,I 表示行下标,J 表示列下标,S 表示行数和列数组成的向量,D 表示序号。
>> [I,J]=ind2sub([3,3],[1,3,5])
I =
1 3 2
J =
1 1 2
利用冒号表达式获得子矩阵
子矩阵是指由矩阵中的一部分元素构成的矩阵。
, 为行列下标的分界
: 表示行/列的全部元素
x:y 表示第 x~y 行/列
子矩阵 | 解释 |
---|---|
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行的全部元素 |
>> A=[1,2,3,4,5;6,7,8,9,10;11,12,13,14,15]
A =
1 2 3 4 5
6 7 8 9 10
11 12 13 14 15
>> A(1:2,:)
ans =
1 2 3 4 5
6 7 8 9 10
>> A(2:3,1:2:5)
ans =
6 8 10
11 13 15
#end运算符:表示某一维的末尾元素下标
>>A=[1,2,3,4,5;6,7,8,9,10;11,12,13,14,15;16,17,18,19,20];
>>A(end,:)
ans =
16 17 18 19 20
>> A([1,4],3:end)
ans =
3 4 5
18 19 20
利用空矩阵删除矩阵的元素
改变矩阵的形状
1.6 MATLAB基本运算
1.7 字符串处理
MATLAB常用指令小结
clear
clc
参考链接-官方文档-爆豆
标签:10,函数,元素,矩阵,基础知识,matlab,ans,MATLAB From: https://www.cnblogs.com/YuukiAsuna/p/17070458.html