文章目录
- 加减乘除
- 纯文本帮助,演示帮助,帮助导航浏览器
- 嵌入函数(Embedding Functions)
- 变量(Variable)
- MATLAB调用的优先级
- 数字显示格式
- 分号的作用
- 三、矩阵
- 列阵(向量和矩阵)
- 取代矩阵中的位置
- 冒号运算符
- 数组串联
- 矩阵和向量的四维运算
- 特殊矩阵
- 一些矩阵的相关函数
- 四、习题
- 五、一些想法
前言
这篇文章是我在b站上学习台大郭老师的课程时所做的笔记,均为本人激情输出,主要是对老师在课上所讲的一些重点以及留下来的问题做一个合集,合集中的代码是演示过的,另外还有我自己对matlab一些重点的理解,希望这次学习能够加强我的动手能力以及实操能力。
学习书籍是《MATLAB R2022a 完全自学一本通》
一、MATLAB简介
二、把MATLAB当作计算机
1.加减乘除
优先顺序:1.括号(),2.次方号^,3.乘* 除/,4.加+ 减- (从左至右)
2.纯文本帮助,演示帮助,帮助导航浏览器
1.纯文本帮助
在MATLAB命令行窗口中,可以通过一些命令来获取这些纯文本的帮助信息。这些命令包括help,lookfor等。
(1)若想了解 sin 函数的使用方法,可在命令行窗口输入:
>> help sin
显示如下信息:
sin - 参数的正弦,以弧度为单位
此 MATLAB 函数 返回 X 的元素的正弦。sin 函数按元素处理数组。该函数同时接受实数和复数
输入。 对于 X 的实数值,sin(X) 返回区间 [-1, 1] 内的实数值。 对于 X 的复数
值,sin(X) 返回复数值。Y = sin(X)
输入参数
X - 输入角(以弧度为单位)
......
通过help sin 命令显示的帮助文档介绍了 sin 函数的主要功能,调用格式以及相关函数的链接。
(2) 若想按照指定关键字查找所有相关的M文件时,可在命令行窗口输入:
>> lookfor inverse
betaincinv - Inverse incomplete beta function.
gammaincinv - Inverse incomplete gamma function.
ipermute - Inverse permute array dimensions.
ifft - Inverse discrete Fourier transform.
ifft2 - Two-dimensional inverse discrete Fourier transform.
ifftn - N-dimensional inverse discrete Fourier transform.
ifftshift - Inverse FFT shift.
datafuntinv - Compute Student's t inverse cumulative distribution function
acos - Inverse cosine, result in radians.
通常在不确定某个函数,仅知道函数的功能时,lookfor 命令可以根据用户提供的完整或不完整的关键字,去搜索出一组与之相关的命令。
2.演示帮助
有以下两种方法:
(1) 单击MATLAB主页面右上角工具栏中的“帮助”按钮
(2) 在命令行中输入:
>> demos
则可以弹出以下窗口:
3.帮助导航浏览器
采用以下两种方式可打开:
(1)
helpbrowers
(2)
doc
3.嵌入函数(Embedding Functions)
例如:sin (cos (pi))
可将先 cos(pi) 求取出来,将其结果储存在一个变量 ans 中,即分成以下两个阶段:
第一阶段:cos (pi)
第二阶段:sin (ans)
4.变量(Variable)
1.变量不需要在赋值前声明
2.单个“等号”(=)是赋值运算符
3.>>左侧=右侧
>>A=10
注意变量位置,变量在左边,数值在右边,顺序不可调换 右边可为变量可为数值
4.大小写之间有区别,例如A和a赋不同的数值,A和a会同时在工作区里面
5.变量开头不可为数字,但变量内可含数字
6.double类型变量:MATLAB中默认的数值类型
如何得知是double类型变量:
1.双击工作区中变量,则会出现:
2. 在命令行窗口打“who”,可知道matlab里面的变量有哪些,在命令行窗口打“whos"则会知道变量以及变量的类型。
7.特殊变量和常量:
ans
i,j :复数
inf :无限大
eps :被当作很小很小的数,在matlab里某个数值小于eps,则将该数值当作0来处理
NaN :不是一个数值 eg: inf/inf
pi :Π
matlab换行:shift+enter
5.MATLAB调用的优先级
高到低:
变量(Variable)
内部函数(Built-in function)
子函数(Subfunction)
私有函数(Private function)
若想消除工作区中的变量,则在命令窗口中输入“clear 被消除的变量”,如果单按“clear”,则工作区中的所有变量将被清除;如果单按“clc”,则消除命令行窗口的所有显示内容。
6.数字显示格式
样式 | 结果 |
short | Short,固定十进制格式,小数点后有四位数字 |
long | Long,固定十进制格式,对于双精度值,小数点后15位,对于单精度值,小数点后7位。 |
shortE | 小数点后有4位数字的简写科学计数法 |
longE | 长科学计数法,小数点后15位表示双精度值,小数点后7位表示单精度值 |
bank | 小数点后2位的货币格式 |
hex | 二进制双精度的十六进制表示形式 |
rat | 小整数之比,将数值转成有理数,分数 |
eg:
7.分号的作用
在程序后面加分号则不显示运算结果
>> a=10;
>> a=10a =
10
⬆ 可用来显示以前的命令
三.矩阵
1.列阵(向量和矩阵)
行向量用空格隔开,列向量用分号隔开
>> a=[1 2 3 4]
a =
1 2 3 4
>> b=[1;2;3;4]
b =
1
2
3
4>> a*b
ans =
30
>> b*a
ans =
1 2 3 4
2 4 6 8
3 6 9 12
4 8 12 16
矩阵的输入:
[1 21 6;5 17 9;31 2 7;]
ans =
1 21 6
5 17 9
31 2 7
查找特定元素:
1.若行向量,列向量已知,则直接按格式a(),b()输入:
>> a(3)
ans =
3
>> b(4)
ans =
4
2.若在矩阵中查找特定元素:
方法一:若想查找矩阵A中21的位置,21在第一行第二列,则可输入A(1,2)
>> A=[1 21 6;5 17 9;31 2 7;]
A(1,2)A =
1 21 6
5 17 9
31 2 7
ans =21
方法二:将矩阵元素排序
例题:
A(8):第8个数字
A([1 3 5]):第1,3,5个数字
A([1,3;1,3]):第1,3个数字和第1,3个数字组成的矩阵
A([1,3],[1,3]):第一行,第三行和第一列,第三列交汇处的数字组成的矩阵
>> A(8)
ans =
9
>> A([1 3 5])
ans =
1 31 17
>> A([1,3;1,3])
ans =
1 31
1 31
>> A([1,3],[1,3])
ans =
1 6
31 7
2.修改矩阵元素,取代位置
则变化方式为:
>> A=[1 21 6;5 17 9;31 2 7]
A =
1 21 6
5 17 9
31 2 7写出矩阵
>> A(1,2)=76
A =
1 76 6
5 17 9
31 2 7替换数值
>> A(3,2)=0
A =
1 76 6
5 17 9
31 0 7替换数值
>> A([1,2],[2,3])=0
A =
1 0 0
5 0 0
31 0 7替换数值
>> A(3,:)
ans =
31 0 7
输出第三行数值
>> A(3,:)=[ ]
A =
1 0 0
5 0 0使第三行数值为空
注意:删除第i行 A(i,:)=[ ],删除第j列A(:,j)=[ ]
3.冒号运算符
输入一个矩阵且矩阵很长,此时运用冒号运算符可方便输入,冒号运算符是用来做等差级数的。
语法:
例题:
>> B=1:5
B =
1 2 3 4 5
>> B=1:2:5
B =
1 3 5
>> B=[1:5;2:3:15;-2:0.5:0]
B =
1.0000 2.0000 3.0000 4.0000 5.0000
2.0000 5.0000 8.0000 11.0000 14.0000
-2.0000 -1.5000 -1.0000 -0.5000 0
>> str='a':2:'z'
str =
'acegikmoqsuwy'
4.数组串联
F=[A B]两个矩阵横向形成一个新的增广矩阵
F=[A;B]两个矩阵竖向形成一个新的增广矩阵
>> A=[1 2;3 4]
A =
1 2
3 4>> B=[9 9;9 9]
B =
9 9
9 9>> F=[A B]
F =
1 2 9 9
3 4 9 9>> F=[A;B]
F =
1 2
3 4
9 9
9 9
例题:
>> A=[1 2;3 4];
>> B=[9 9;9 9];
>> F=[A B]F =
1 2 9 9
3 4 9 9>> C=[5 6 7 8];
D=[-2 -1 0 1];
E=[C;D]E =
5 6 7 8
-2 -1 0 1>> G=[F;E]
G =
1 2 9 9
3 4 9 9
5 6 7 8
-2 -1 0 1
5.矩阵和向量的四维运算
1.操作符:+,-,*,/,^,.,'(转置)
1.矩阵和实数
>> A=[1 2 3;4 5 4;9 8 7];
>> a=2;
>> A+aans =
3 4 5
6 7 6
11 10 9
矩阵内每个元素都+2减法也一样
>> A/a
ans =
0.5000 1.0000 1.5000
2.0000 2.5000 2.0000
4.5000 4.0000 3.5000>> A./a
ans =
0.5000 1.0000 1.5000
2.0000 2.5000 2.0000
4.5000 4.0000 3.5000矩阵中每个元素都除2
因为是矩阵和实数间的运算,所以除和点除结果一样
>> A^a
ans =
36 36 32
60 65 60
104 114 108a=2,所以该运算为A*A,即a等于几,就有几个A做乘法
>> A.^a
ans =
1 4 9
16 25 16
81 64 49矩阵里每个值都a次方
>> A'
ans =
1 4 9
2 5 8
3 4 7转置,按照对角线处翻转
2.矩阵和矩阵
>> A=[1 2 3;4 5 4;9 8 7];
>> B=[3 3 3;2 4 9;1 3 1];
>> A+Bans =
4 5 6
6 9 13
10 11 8矩阵内对应元素,每行每列各自相加
>> A*B
ans =
10 20 24
26 44 61
50 80 106
依次用A的行乘以B的列再将结果相加,得到新的矩阵的相应的元素的值>> A.*B
ans =
3 6 9
8 20 36
9 24 7A,B相同位置上的元素相乘得到新矩阵
>> A/B
ans =
0.0714 0.2857 0.2143
1.1667 0 0.5000
3.2619 -0.2857 -0.2143A*inv(B),inv(B):计算B的逆矩阵。相当于B*(-1)
>> A./B
ans =
0.3333 0.6667 1.0000
2.0000 1.2500 0.4444
9.0000 2.6667 7.0000
A,B相同位置上的元素相除得到新矩阵
6.特殊矩阵
- linspace():生成线性间距向量
使用格式:linspace(x1 , x2,n)返回包含 x1 和 x2 之间的 n-1个等间距点的行向量。
- eye():单位矩阵
使用格式:eye(n)返回一个主对角线元素为 1 且其他位置元素为 0 的 n×n 单位矩阵。
- zeros():全零矩阵
使用格式:zeros(m,n)返回一个m行n列的全零矩阵。
- ones():全1矩阵
使用格式:ones(m,n)返回一个m行n列的全1矩阵。
- diag():对角矩阵
使用格式:一个除对角线之外的元素皆为0的矩阵,常写为diag(a1,a2,...,an) 。
- rand():均匀分布随机数
使用格式:rand(n)构造n×n的矩阵,其元素为0~1分布的随机数
7.一些矩阵的相关函数
>> A=[1 2 3;0 5 6;7 0 9];
>> max(A)ans =
7 5 9
>> max(max(A))
ans =
9
>> min(A)
ans =
0 0 3
>> sum(A)
ans =
8 7 18
>> mean(A)
ans =
2.6667 2.3333 6.0000
>> sort(A)
ans =
0 0 3
1 2 6
7 5 9>> sortrows(A)
ans =
0 5 6
1 2 3
7 0 9>> size(A)
ans =
3 3
>> length(A)
ans =
3
>> find(A==6)
ans =
8
意思是6位于矩阵的第8个位置上
1.max函数:用于求向量或者矩阵的最大元素,或几个指定值中的最大值。
(1)max(A):输入参数A可以是向量或矩阵,若为向量,则返回该向量中所有元素的最大值;若为矩阵,则返回一个行向量,向量中各个元素分别为矩阵各列元素的最大值。
(2)max(A,B):比较A、B中对应元素的大小,A、B可以是矩阵或向量,要求尺寸相同,返回一个A、B中比较大元素组成的矩阵或向量。另外A、B中也可以有一个为标量,返回与该标量比较后得到的矩阵或向量。
(3)max(max(A)):找出 的最大值
2.sum函数:数组元素求和
max(A):输入参数A可以是向量或矩阵,若为向量,则返回该向量中所有元素的最大值;若为矩阵,则返回一个行向量,向量中各个元素分别为矩阵各列元素的最大值。
3.mean函数:数组元素求均值
方法同max一样,mean(A)=每列的均值
4.sort函数:对数组元素排序
sort(A):如果A是向量,sort(A) 对A中元素按照升序排列;如果A是矩阵,sort(A) 对A按每一列元素按照升序排列;如果A是多维数组,sort(A) 对沿着第一非单元集的元素像向量一样处理并返回一个升序排列的向量数组。
5.sortrows函数:对矩阵行或表行进行排序
sortrows(A):默认按照第一列升序来对行进行排列,第一列相同,看第二列升序,类推。
6.size函数:获取矩阵的行数和列数
s=size(A):当只有一个输出参数时,返回一个行向量,该行向量的第一个元素是矩阵的行数,第二个元素是矩阵的列数。
7.length函数:length函数是求最大数组维度的长度
l= length(A)
:返回 A 中最大数组维度的长度。对于向量,长度仅仅是元素数量。对于具有更多维度的数据,长度为 max(size(X))
。空数组的长度为零。
8.find函数:查找非零元素的索引和值
如果X是向量,则find返回与X方向相同的向量;如果X是多维数组,则find返回结果线性索引的列向量;如果X不包含非零元素或为空,则find返回一个空数组。
四.习题
>> cos(((1+2+3+4)^3/5)^0.5)
ans =
-0.0050
>> sin((pi)^0.5)+log(tan(1))
ans =
1.4228
>> 2^(3.5*1.7)
ans =
61.8199
>> exp(sin(10))
ans =
0.5804
>> format long
>> 3/13+4/14+5/15ans =
0.849816849816850
>> format rat
>> 3/13+4/14+5/15
ans =
232/273
一些想法
今天是7月9号,距离我回到学校还有32天,我得在这些天里面把这些课全都听完,老师讲的真的非常棒,希望我能真的学到一些新的知识,这一小时四十多分钟的课,我花了两天多的时间来总结完,做完这些的我身心疲惫,我想,如果电脑能够语音输入那该多好啊,这个字打的我好累啊,这是我第一次写这个东西,也不知道有没有人看,如果能被人看见,并且能产生一点点帮助,真的是一件非常开心的事情。(上面的图片都是来自b站)