Matlab的主要功能
-
数值运算
- 矩阵的所有基本运算,求秩、逆、行列式
矩阵的三角分解、正交分解、奇异分解等
求方程组的解,多项式的各种基本运算等等
- 矩阵的所有基本运算,求秩、逆、行列式
-
符号运算
- 可以实现因式的分解、展开、合并、简化及通分等
可以计算级数、极限、导数 、积分等
还可以求出代数方程和微分方程的精确解或通解
- 可以实现因式的分解、展开、合并、简化及通分等
-
绘图功能:各种二维、三维绘图,轻而易举实现数据可视化
Matlab的矩阵操作
ps:Matlab的注释是%符号不是#
A = 1 : 2 : 10 #在区间[1,10]之间生成一个公差为2的等差数列
A = [1,2,3;4,5,6;7,8,9]
#生成一个3*3的矩阵:
# 1 2 3
# 4 5 6
# 7 8 9
A(2,3) #矩阵的第二行第三个元素
A = [A;[6,6,6]] #添加一行
A = [A,[6;6;6]] #添加一列
X = A(2,:) #抽出第二行
A(2,:) = [] #删除第二行
B = A([1,3],:) #抽出1、3行
A([1,3],:) = A([1,3],:) #交换1、3行
矩阵的旋转
fliplr(A) 左右旋转
flipud(A) 上下旋转
rot90(A) 逆时针旋转90°
rot90(A,K) 逆时针旋转k*90°
查看矩阵的大小
size(A) A的行数和列数
size(A,1) 返回行数
size(A,2) 返回列数
length(X) 返回向量X的长度
- 其中
;
表示换行。A = [1;2;3;4]
表示生成一个列向量。 A(i:j, m:n)
表示由矩阵 A 的第 i 到第 j 行和第 m 到第 n列交叉线上的元素组成的子矩阵。
常见矩阵生成函数
函数 | 注释 |
---|---|
zeros(m,n) | 生成一个 m 行 n 列的零矩阵,m=n 时可简写为 zeros(n) |
ones(m,n) | 生成一个 m 行 n 列的元素全为 1 的矩阵, m=n 时可写为 ones(n) |
eye(m,n) | 生成一个主对角线全为 1 的 m 行 n 列矩阵, m=n 时可简写为 eye(n),即为 n 维单位矩阵 |
diag(X) | 若 X 是矩阵,则 diag(X) 为 X 的主对角线向量 若 X 是向量,diag(X) 产生以 X 为主对角线的对角矩阵 |
tril(A) | 提取一个矩阵的下三角部分 |
triu(A) | 提取一个矩阵的上三角部分 |
rand(m,n) | 产生0~1间均匀分布的随机矩阵 |
randn(m,n) | 产生均值为0,方差为1的标准正态分布随机矩阵 |
矩阵的除法
矩阵的除法分为/
\
,分别为右除跟左除。
X = A\B
<=> A*X = B
X = B/A
<=> X*A = B
ps:矩阵A的逆为inv(A)
Matlab绘图
例:y=cos(x)在[0,4*pi]上的图像
x = [0:0.1:2*pi] 生成一个从0到2*pi的等差数列,公差为0.1
y = cos(x) 以x为定义域生成一个函数y
plot(x,y) 以x为定义域,y为值域生成函数图像
title('y=cos(x)') 标题
xlabel('x轴') x坐标轴标注
ylabel('y轴') y坐标轴标注
plot(x,y,‘string’)
其中string代表的是图形的基本属性,例如画的图是虚线还是实线,线的颜色是什么等。
其他相关命令
legend('cos(x)')
添加图例。
text(x,y,string)
在指定地方添加文本。例如:text(2,cos(2),‘fuck’)
gird on 或 grid off
显示网格。
hold on 或 hold off
保持当前窗口的图像。
figure(n)
新建绘图窗口。
subplot(m,n,p)
划分绘图区域。将一个绘图窗口分割成m*n个子区域,并按照从左到右依次编号。p表示第p个绘图子区域。
三维图像
三位曲线:plot3
例:三维螺旋曲线
t = [0:0.1:10*pi]
x = 2*t
y = sin(t)
z = cos(t)
plot3(x,y,z)
空间曲面
mesh(x,y,z,c)
绘制由矩阵x,y,z所确定的曲面网格图,矩阵c用来确定网格颜色,省略时c = z。
mesh(z)
绘出矩阵z的三维消隐图
meshc
调用方式与mesh相同,在mesh的基础上增加等高线。
meshz
调用方式与mesh相同,在mesh的基础上屏蔽边界线。
[X,Y] = meshgrid(x,y)
网格生成函数。x,y为给定的向量,X,Y是网格划分后得到的网格矩阵。
surf(X,Y,Z)
参数跟mesh相同,但mesh绘制的是网格图,surf绘制的是着色的三维表面图。可试一下对比。
sphere(n)
绘制单位球面且只能绘制单位球面。
Matlab符号运算
符号对象的建立:sym 和 syms
什么是符号对象?如果你想求 2 x 2 + 4 x = 0 2x^{2}+4x = 0 2x2+4x=0 的根,那么计算机如何识别这个x是未知量x呢?这个时候就需要用到符号对象。
- sym跟syms
- sym函数用来建立单个符号变量。
a = sym('b')
意思为符号变量a代表b。a = sym('3')
意思为符号变量a代表3。 - syms(比较常用)用来建立多个符号变量,
syms a b c
意思为建立符号变量a,b,c。等价于a = sym('a') b = sym('b') c = sym('c')
- sym函数用来建立单个符号变量。
符号表达式的替换
subs(f,x,a)
用 a 替换字符函数 f 中的字符变量 x 。
Matlab编程入门
数据输入:input
A = input('')
输入到A中。其中引号里面的内容会先展示在输出界面。比如A = input('请输入一个数字')
数据输出: disp
disp(x)
例如 A = 'hello world'; disp(A)
ps:如果不加分号则会自动输出一次。
if 条件语句
if 条件
do
elseif 条件
do
else 条件
do
end
for循环
for i = 1:n
do
end
循环变量为i,i从1循环到n为止。
while循环
while 条件
do
end
break跟continue跟c++一样
求导数
diff(f,“v”,n) 其中v是自变量,f是表达式,求n阶导数。
极限问题
- 单变量极限
limit(f,x,a,“right”) 其中f是表达式,x,a代表x在a处的极限,right为右极限,改为left是左极限,不写默认求双侧极限。 - 多变量极限
可以使用limit的嵌套函数来实现:limit(limit(f,x,x0),y,yo)
积分问题
- 不定积分: int(f,x) 其中f是表达式,x是被积变量。
- 定积分:int(f,x,a,b) 其中a,b是积分上下限。
- 二重积分:int((int(f,t)+c1),x)+c2 要添加常数项c1,c2。
级数求和
symsum(fk,k,k0,kn) 其中fk为表达式,k0和kn表示求和的项数。