MATLAB复习

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)

数值计算和符号计算的区别和联系

  1. 数值计算:
    • 当需要快速进行大量数值运算时,如矩阵运算、数值积分等,应使用数值计算。
    • 当对计算精度要求不高,或者可以接受一定误差时,也应使用数值计算。
  2. 符号计算:
    • 当需要进行代数运算、微分、积分、方程求解等时,应使用符号计算。
    • 当需要得到精确结果,或者需要进行符号推导时,也应使用符号计算。

两者的根本区别是 : 数值计算的表达式、矩阵变量中不允许有未定义的自由变量 , 而符号计算可以含有未定义的符号变量。

符号计算

符号对象 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()

相关推荐
程高兴2 小时前
遗传算法求解冷链路径优化问题matlab代码
开发语言·人工智能·matlab
念念010716 小时前
基于MATLAB多智能体强化学习的出租车资源配置优化系统设计与实现
大数据·人工智能·matlab
fengfuyao98520 小时前
基于MATLAB的GUI实现人脸检测、眼睛检测以及LBP直方图显示
开发语言·计算机视觉·matlab
一株月见草哇21 小时前
Matlab(5)进阶绘图
matlab
项目申报小狂人1 天前
算法应用上新!自适应更新策略差分进化算法求解球形多飞行器路径规划问题,附完整MATLAB代码
开发语言·算法·matlab
躺平都躺不明白1 天前
数学建模-评价类问题-优劣解距离法(TOPSIS)
数学建模·matlab
壹Y.4 天前
MATLAB 绘图速查笔记
笔记·matlab
Evand J4 天前
【MATLAB例程】滑动窗口均值滤波、中值滤波、最小值/最大值滤波对比。附代码下载链接
开发语言·matlab·均值算法
一株月见草哇5 天前
Matlab(4)
人工智能·算法·matlab
2401_823868225 天前
织构表面MATLAB仿真
人工智能·机器学习·matlab·信号处理