MATLAB常用的标点符号
|---------|-----------|---------------------------------------------|
| 空格 | | 变量分隔符 矩阵一行中各元素间的分隔符 程序语句关键词分隔符 |
| 逗号 | , | 分隔显示计算结果的各语句 变量分隔符 矩阵中一行各元素的分隔符 |
| 点号 | . | 数值中的小数点 结构数组的域访问符 |
| 分号 | ; | 分隔不想显示计算结果的各语句 矩阵行与行的分隔符 |
| 冒号 | : | 用于生成一维数值数组 表示一维数组的全部元素或多维数组某一维的全部元素 |
| 百分号 | % | 注释语句说明符,凡在其后的字符均视为注释性内容而不被执行 |
| 单引号 | ' ' | 字符串标识符 |
| 圆括号 | () | 用于矩阵元素引用 用于函数输入变量列表 确定运算的先后次序 |
| 方括号 | [ ] | 向量和矩阵标识符 用于函数输出列表 |
| 花括号 | {} | 标识细胞数组 |
| 续行符 | ... | 长命令行需分行时连接下行用 |
| 赋值号 | = | 表达式赋值给一个变量6 |
逗号
显示计算结果的指令与其后指令的分隔
用作输入量与输入量的分隔符
用作数组元素分隔符号
命令行窗口清屏 clc 清除指令窗中显示的内容
清除MATLAB工作空间的所有变量clear
清除图形窗clf
whos
变量命名规则
(1)变量名称和函数名称有大小写之分
(2)变量名称的第一个字符必须是英文字符
5xf、_mat等都是不合法的变量名称
(3)变量名称中不可以包含空格或者标点符号,但是可以包含下划线
xf_mat是合法的
MATLAB文件存取的命令
save Filename
load Filename
MATLAB中的预定义变量
|--------------|-----------------------------------|
| ans | 计算结果的默认名称 |
| eps | 计算机的零阈值 |
| Inf(inf) | A无穷大 |
| pi | 圆周率 |
| NaN(nan) | 表示结果或者变量不是数值 0/0 0*∞ ∞/∞ |
MATLAB中的取整函数
|--------------|------------------------------------|
| round(a) | 向最接近的整数取整,小数 部分是0.5时向绝对值大的方向取整 |
| fix(a) | 向0方向取整 |
| floor(a) | 向不大于a的最接近整数取整 |
| ceil(a) | 向不小于a的最接近整数取整 |
复数相关运算函数
|------------------|--------------------|
| real(z) | 返回复数z的实部 |
| imag(z) | 虚部 |
| abs(z) | 幅度 |
| angle(z) | 幅角 |
| conj(z) | 共轭复数 |
| complex(a,b) | 以a为实部、b为虚部创建复数 |
A=[2,3,4,5,6]
A=1:2:10 %1 3 5 7 9
A=linspace(1,30,5)
%1.0000 8.2500 15.5000 22.7500 30.0000
向量的点积运算:对应位置上的元素相乘然后再相加
dot(A)
叉积运算:A、B的叉积C,C的方向垂直于A与B所确定的平面
cross(A)
矩阵元素的下标表示法
(1)全下标A(i,j)
(2)单下标A(s) s=(j-1)*m+i
A(2,3) A(6)
A(1:2,3) 矩阵A第1、2行第3列的元素值
A(6,8) 矩阵A单下标第6-8号元素的值
A(:)=1:9
A=
1 4 7
2 5 8
3 6 9
A(2,:)=[ ] %删除第二行
矩阵的创建
- 直接输入法
- 抽取法
A=[1 2 3 4;5 6 7 8;9 10 11 12;13 14 15 16]
A=
1 2 3 4
5 6 7 8
9 10 11 12
13 14 15 16
(1)全下标
B=A(1:3,2:3) %取矩阵A行数为1~3、列数为2~3的元素构成子矩阵B
B=
2 3
6 7
10 11
C=A([1,3],[2,4]) %取矩阵A行数为1、3,列数为2、4的元素构成子矩阵C
C=
2 4
10 12
D=A(4,:) %取矩阵A的第4行、所有列
D=
13 14 15 16
(2)单下标
B=A([4:6;3 5 7;12:14])
B=
13 2 6
9 2 10
15 4 8
- 拼接法
F=[A;C]
- 函数法
矩阵生成函数
|----------------|----------------------------|
| zeros(m,n) | 生成m*n阶的全0矩阵 |
| ones(m,n) | 全1矩阵 |
| rand(m,n) | 生成取值在0~1之间满足均匀分布的随机矩阵 |
| randn(m,n) | 生成满足正态分布的随机矩阵 |
| eye(m,n) | 生成m*n阶的单位矩阵 |
矩阵的代数运算
行列式det(A)
逆矩阵 inv(A)
求矩阵的秩rank(A)
求矩阵的迹trace(A)
求矩阵的特征值和特征向量 [X,Lamda]=eig(A)
转置B=A'
乘幂A^3 开方sqrtm(A) 指数expm(A) 对数logm(A)
|-------------|-----------------------|
| triu(A) | 提取矩阵A的右上三角元素,其余补0 |
| tril(A) | 提取矩阵A的左下三角元素,其余补0 |
| diag(A) | 提取矩阵A的对角线元素 |
数组的创建
创建空数组A=[ ]
创建一维数组
A=1:4
B=linspace(1,2,4)
B=
1.0000 1.3333 1.6667 2.0000
创建二维数组
A=[1 2 3;2 5 6;1 4 5]
B=[ [1:3]; [linspace(2,3,3)]; [3 5 6] ]
C=[ 1:5 ;linspace(3,10,5); a 5 2 6 4]
胞元数组 A(2,3) 第2行第3列元素 A{2,3} 所存的内容
数组大小
d=size(A) d=[m,n]
[a,b]=size(A)
length(A)
数组的维度
ndims(A)
|----------------|----------------------------------------------|
| zeros(m,n) | 创建一个m行n列的全0数组 zeros(m) 创建一个m行m列的全0数组 |
| ones(m,n) | 全1数组 |
| eye | 单位数组,对角线元素为1,其他元素为0 |
| diag(v) | 对角线元素依次对应于向量v的元素 |
| rand(m,n) | m行n列的随机数组,其元素服从0到1的均匀分布 |
| magic(n) | n行n列的魔方数组 |
数组的表示
逻辑索引 B=A>0.8
双下标索引 A(3,1)
单下标索引 A(3)
转换sub2ind/ind2sub
IND=sub2ind(size(A),I,J)
[I,J]=ind2sub(size(A),IND)
数组尺寸调整 reshape(A,2,6)
A=[1,2;3,4];
B=[-1,-2;2,1];
S=3;
A.*B= -1 4
6 4
A*B= 3 0
5 -2
S.*A= 3 6
9 12
S*B= -3 -6
6 3
数值计算
norm(A) 计算向量和矩阵2阶范数
norm(A,p) 计算向量或矩阵的p阶范数
求解线性方程组
矩阵相除法Amn
AX=B X=A\B
m=n且A可逆-----唯一解
n>m-----------最小二乘解
n<m----------最小范数解
消去法
增广矩阵 [A B]
rref() 初等行变换
迭代法
多项式
A=[1,2,3,4,5]
ploy2sym(A) %显示多项式
x=[-1,2;-2,1]
y=ploycalm(p,x)
根roots(p)
导数ployer(p)
乘法卷积conv(p1,p2)
反卷积 [div,rest]=deconv(a,b)
零点 [x,fval,exitflag,output]=fzero(fun,x0,options)
数值积分
q=quad(fun,a,b,tol,trace)
q=quadl(fun,a,b,tol,trace)
q=dbquad(fun,xmin,ymin,ymax,tol,method)
数值计算和符号计算的区别和联系
- 数值计算:
- 当需要快速进行大量数值运算时,如矩阵运算、数值积分等,应使用数值计算。
- 当对计算精度要求不高,或者可以接受一定误差时,也应使用数值计算。
- 符号计算:
- 当需要进行代数运算、微分、积分、方程求解等时,应使用符号计算。
- 当需要得到精确结果,或者需要进行符号推导时,也应使用符号计算。
两者的根本区别是 : 数值计算的表达式、矩阵变量中不允许有未定义的自由变量 , 而符号计算可以含有未定义的符号变量。
符号计算
符号对象 sym syms
确定方程中的自变量 symvar()
符号变量代换 subs(S,old,new)
将符号对象转换为数值对象的函数 double() digits() vpa() eval()
c1=sym(sqrt(2)*log(7));
ans1=double(c1)
ans1=
2.7519
符号表达式因式分解 factor()
符号表达式展开expand()
同类项合并函数collect()
化简函数simplify()
通分函数numden()
求极限limit(F,x,a) limit(F,x,a
,'left')左极限
微分 diff(f,n)
积分 int(S,v,a,b)
xor(x,y) 异或
函数
全局变量 global a
局部变量 每个函数在运行时会占用独自的内存
1). 作用域不同:全局变量的作用域为整个程序,而局部变量的作用域为当前函数或循环等
2). 内存存储方式不同:全局变量存储在全局数据区中,局部变量存储在栈区
3). 生命期不同:全局变量的生命期和主程序一样,随程序的销毁而销毁,局部变量在函数内部或循环内部,随函数的退出或循环退出就不存在了
4). 使用方式不同:全局变量在声明后程序的各个部分都可以用到,但是局部变量只能在局部使用。函数内部会优先使用局部变量再使用全局变量
switch case 分支
某商场对顾客所购买的商品实行打折销售,标准如下(商品价格用price来表示)
price<200 没有折扣
200 500 3%折扣
500 1000 5%折扣
1000 2500 8%折扣
2500 5000 10%折扣
5000<=price 14%折扣
输入所售商品的价格,求其实际销售价格
price=input("请输入商品价格");
switch fix(price/100)
case {0,1}
rate=0;
case {2,3,4}
rate=3/100;
case num2cell(5:9)
rate=5/100;
case num2cell(25:49)
rate=10/100;
otherwise
rate=14/100;
end
price=price*(1-rate)
input
disp
二维曲线
plot
plot(x,y1,'option',x,y2,'option',...) 缺省:颜色--蓝 折线
|-------|---------|-------|--------|--------|---------|--------|--------|-------------|--------|
| w | 白色 | y | 黄色 | - | 实线 | v | ▽ | * | 型号 |
| m | 洋红色 | r | 红色 | -- | 虚线 | ^ | Δ | 。 | 圆圈 |
| g | 绿色 | k | 黑色 | : | 点线 | x | 叉号 | square | □ |
| b | 蓝色 | c | 青色 | -. | 点画线 | + | 加号 | diamond | ⃟ |
为了使两个plot的图形在同一个坐标显示,可以用hold on命令进行图形保持
可以使用grid on命令为图形添加网格
xlable
ylable
legend 图例
text 在某点上加上文字
1.在同一图上分别用红色实线和绿色虚线绘制y1=sin(x)和y2=cos(x)在区间[0,4*pi]的曲线,并用星号*标出两条曲线的交点以及建立图例
x=0:pi/200:4*pi; y1=sin(x) y2=cos(x) zz=x(find(abs(y1-y2)<0.005)) z=min(zz) plot(x,y1,'r-',x,y2,'g-.') hold on plot(zz,sin(zz),'*') legend('sin','cos')
2.同一图形窗的不同子图
t=(0:pi/100:pi)'; y1=sin(t)*[1,-1]; y2=sin(t).*sin(9*t); t3=pi*(0:9)/9; y3=sin(t3).*sin(9*t3); subplot(1,2,1) plot(t,y1,'r:',t,y2,'b',t3,y3,'b。') subplot(1,2,2) plot(t,y2,'b') axis([0,pi,-1,1])
|-----------------------------------|----------|
| bar(x,y) | 条形图 |
| polar(θ,r) | 极坐标图 |
| stairs(x,y) | 阶梯图 |
| line([x1,y1],[x2,y2],...) | 折线图 |
| fill(x,y,'b') | 实心图 |
| scatter(x,y,s,c) | 散点图 |
| pie(x) | 饼图 |
|----------------------|----------------|
| axis on/off | 显示/取消坐标轴 |
| xlabel('option') | x轴加备注 |
| ylabel('option') | y轴加备注 |
| title('option') | 图形加标题 |
| legend('option') | 图形加备注 |
| grid on/off | 显示/取消网格线 |
| box on/off | 给坐标加/不加边框线 |
axis(xmin xmax ymin ymax)
text(x,y,'string','option')
子图
subplot(m,n,p)
三维曲面
surf(z,y,z)
surfc() 在曲线下面绘制等高线
peak镂空
sphere 三维球面
surf() mesh()