本文用来记录使用matlab时出现的一些问题,内容主要是matlab中与其他编程语言(Java、C++、python)在使用上的细小区别以及matlab特有的一些用法。内容不全面,分类也不完整,如若哪里存在错误,欢迎批评指正:)
Matlab使用成长日记——(二)不等号&求逆&冒号&点号&画线段&限制坐标范围
matlab中的不等号
a ~= 0
注意:一定要与其他编程语言中的 !=
区别开来
matlab求逆运算
A
=
[
a
b
c
d
e
f
g
h
i
]
A= \left[\begin{matrix} a & b & c \\ d & e&f\\ g & h & i\\ \end{matrix} \right]
A=⎣⎡adgbehcfi⎦⎤
B
=
[
a
b
c
d
e
f
g
h
i
j
k
l
]
B= \left[ \begin{matrix} a & b & c & d \\ e&f&g & h\\ i&j&k&l\\ \end{matrix} \right]
B=⎣⎡aeibfjcgkdhl⎦⎤
c
=
[
1
2
3
4
]
c= \left[ \begin{matrix}1& 2&3&4\\ \end{matrix} \right]
c=[1234]
求逆方法 | 适用范围 | 举例 |
---|---|---|
inv() | 非奇异可逆方阵 | inv(A) |
/ | 右除,行数相等 | A/B = A*inv(B) |
\ | 左除,列数相等 | B\c = pinv(B)*c |
pinv() | 任意矩阵,求得广义逆(伪逆) | pinv(B) |
/
(右除)和\
(左除)同样也只适用于非奇异可逆方阵,但执行效率比inv()
高。pinv()
更为普适,但同样执行效率不高。
冒号的使用方法
在for循环中的用法
冒号表示从哪里开始,每次间隔多少,到哪里
a:b:c
:从a
开始,每次间隔b
,到c
停止
b
即为步长
注意:matlab中:
的用法与python中的切片操作有所区别,python的切片操作不包含c
.
例如:
for i = 1:2:5
i
end
i =
1
i =
3
i =
5
当b
为负数时,表示逆序
for i=5:-2:1
i
end
i =
5
i =
3
i =
1
在矩阵中的用法
D = [ a b c d m e f g h n i j k l p ] D= \left[ \begin{matrix} a & b & c & d &m\\ e&f&g & h&n\\ i&j&k&l&p\\ \end{matrix} \right] D=⎣⎡aeibfjcgkdhlmnp⎦⎤
以矩阵D为例:
D(2:3,1:2:5)
e g n
i k p
具体用法与在for循环中的相似,D( , )
中前者选择行,后者选择列。
特殊一点的用法:
可以代表所选行(列)的所有列(行)
同样还是以矩阵D为例:
D(2:3,:)
e f g h n
i j k l p
. 号用法
.* 与 * 的区别
x
=
[
1
2
3
4
]
x= \left[ \begin{matrix}1& 2&3&4\\ \end{matrix} \right]
x=[1234]
x
∗
x
T
=
1
2
+
2
2
+
3
2
+
4
2
=
30
x*x^ {T}=1^{2}+2^{2}+3^{2}+4^{2}=30
x∗xT=12+22+32+42=30
x
T
∗
x
=
[
1
2
3
4
2
4
6
8
3
6
9
12
4
8
12
16
]
x^ {T}*x=\left[ \begin{matrix} 1& 2 &3 & 4 \\ 2&4&6 &8\\ 3&6&9&12\\4&8&12&16 \end{matrix} \right]
xT∗x=⎣⎢⎢⎡1234246836912481216⎦⎥⎥⎤
x
.
∗
x
=
[
1
2
2
2
3
2
4
2
]
=
[
1
4
9
16
]
x.*x=\left[ \begin{matrix}1^{2}& 2^{2}&3^{2}&4^{2}\\ \end{matrix} \right]=\left[ \begin{matrix}1& 4&9&16\\ \end{matrix} \right]
x.∗x=[12223242]=[14916]
对于./
和.^
也是同样的道理,加上.
之后不在按照矩阵向量的法则进行运算,而是单纯对矩阵向量内的每一个数进行运算。
绘图——已知两点画线段
已知点(x1,y1)
和点(x2,y2)
,画经过两点的线段
plot([x1,x2],[y1,y2]);
举例:
(1,2)
和 (5,1)
plot([1,5],[2,1]);
限制坐标轴的范围
axis([xmin xmax ymin ymax])
上图就是添加了axis([0 6 0 3])
的限制条件得出的。