画图
二维作图
plot()
其中x有个linspace的指令:
用法:linspace(x1,x2,N):x1起始值,x2终止值,N元素数。
功能:linspace是Matlab中的一个指令,用于产生x1,x2之间的N点行矢量。其中x1、x2、N分别为起始值、中止值、元素个数。若缺省N,默认点数为100。
plot(x,y):x,y可以是向量,也可以是矩阵,还可以是两个函数
含选项的plot(x,y,选项):选项包括线型,颜色,数据点标记
含选项的plot函数 Matlab提供了一些绘图选项,用于确定所绘曲线的线型、颜色和数据点标记符号。这些选项如表所示: 线型 颜色 标记符号 - 实线 b蓝色 . 点 s 方块 : 虚线 g绿色 o 圆圈 d 菱形 -. 点划线 r红色 × 叉号 ∨朝下三角符号 -- 双划线 c青色 + 加号 ∧朝上三角符号 m品红 * 星号 <朝左三角符号 y黄色 >朝右三角符号 k黑色 p 五角星 w白色 h 六角星 例 用不同的线型和颜色在同一坐标内绘制曲线 及其包络线。
————————————————
版权声明:本文为CSDN博主「飞翔南」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_21911231/article/details/51693166
fplot()函数
基本用法
fplot(f,lims,选项)
f代表一个函数,通常用函数句柄的形式;lims为x轴取值范围,用二元向量[xmin,xmax]表示,默认为[-5,5]。选项与plot相同。
fplot(@(x)sin(x),[0,10],'-r')
fplot(fx,fy,)
fplot(@(t)t.sin(t),@(t)t.cos(t),[0,10*pi],'-r')
polar(theta,rho,选项)极坐标图
三维作图
在二维曲线作图里边我们主要使用的函数是plot和fplot函数,而在三维曲线作图里面我们使用的是plot3和fplot3函数,其不但长得像,功能也是差不多的,只不过是做了扩展而已。
三维作图
在 MATLAB 中,进行三维图形绘制时,常常需要首先创建三维网格,也就是先创建 平面图的坐标系。在 MATLAB 中,常用 meshgrid()
函数生成网格数据,其调用格式如下。
[X,Y]=meshgrid(x,y)
:用于生成向量 x 和 y 的网格数据,即变换为矩阵数据 X 和 Y, 矩阵 X 中的行向量为向量 x,矩阵 Y 的列向量为向量 y。
[X,Y]=meshgrid(x)
:生成向量 x 的网格数据,函数等同[X,Y]=meshgrid(x,x)
。
[X,Y,Z]=meshgrid(x,y,z)
:生成向量 x、y、z 的三维网格数据,生成的数据 X 和 Y 可分别表示三维绘图中的 x 和 y 坐标。
三维网格图形是指在三维空间内连接相邻的数据点,形成网格。在MATLAB中绘制三维网格图的函数主要有mesh()函数、meshc()函数和meshz()函数。其中,mesh()函数最常 用,其调用格式如下:
mesh(x,y,z)
:绘制三维网格图,x、y、z 分别表示三维网格图形在 x 轴、y 轴和 z 轴 的坐标,图形的颜色由矩阵 z 决定。
mesh(Z)
:绘制三维网格图,分别以矩阵 Z 的列下标、行下标作为三维网格图的 x 轴、y 轴的坐标,图形的颜色由矩阵 Z 决定。
mesh(...,C)
:输入参数C用于控制绘制的三维网格图的颜色。
mesh(...,'PropertyName',PropertyValue,...)
:设置三维网格图的指定属性的属性值。
- 函数
meshc()
可绘制带有等值线的三维网格图,其调用格式与函数 mesh()基本相同, 但函数meshc()
不支持对图形网格线或等高线指定属性的设置。 - 函数
meshz()
可绘制带有图形底边的三维网格图,其调用格式与函数 mesh()基本相同, 但函数meshz()
不支持对图形网格线指定属性的设置。 - 另外,函数
ezmesh()
、ezmeshc()
和ezmeshz()
可根据函数表达式直接绘制相应的三维网格图。
由于网格线是不透明的,绘制的三维网格图有时只能显示前面的图形部分,而后面的 部分可能被网格线遮住了,没有显示出来。 MATLAB中提供了命令 hidden 用于观察图形后面隐藏的网格,hidden 命令的调用格式如下:
hidden on
:设置网格隐藏部分不可见,默认情况下为此状态。
hidden off
:设置网格的隐藏部分可见。
hidden
:该命令用于切换网格的隐藏部分是否可见。
————————————————
版权声明:本文为CSDN博主「乐清sss」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/sunyueqinghit/article/details/81905509
三维表面图的绘制
三维表面图也可以用来表示三维空间内数据的变化规律,与之前讲述的三维网络图的 不同之处在于对网格的区域填充了不同的色彩。在 MATLAB 中绘制三维表面图的函数为surf()
函数,其调用格式如下:
surf(Z)
:绘制数据 Z 的三维表面图,分别以矩阵 Z 的列下标、行下标作为三维网格图的 x 轴、y 轴的坐标,图形的颜色由矩阵 Z 决定。
surf(X, Y, Z)
:绘制三维表面图,X、Y、Z 分别表示三维网格图形在 x 轴、y 轴和 z 轴的坐标,图形的颜色由矩阵 Z 决定。
surf(X, Y, Z, C)
:绘制三维表面图,输入参数 C 用于控制绘制的三维表面图的颜色。
surf(..., 'PropertyName', PropertyValue)
:绘制三维表面图,设置相应属性的属性值。
- 函数
surfc()
用于绘制带等值线的三维表面图,其调用格式同函数surf()
基本相同 - 函数
surfl()
可用于绘制带光照模式的三维表面图,与函数surf()
和surfc()
不同的调用格式如下:
surfl(...,'light')
:以光照对象 light 生成一个带颜色、带光照的曲面。
surfl(...,'cdata')
:输入参数 cdata 设置曲面颜色数据,使曲面成为可反光的曲面。
surfl(...,s)
:输入参数 s 为一个二维向量[azimuth,elevation]
,或者三维向量[x,y,z]
,用于指定光源方向,默认情况下光源方位从当前视角开始,逆时针 45°。
————————————————
版权声明:本文为CSDN博主「乐清sss」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/sunyueqinghit/article/details/81905509
绘图的辅助操作
-
图形标注
titll(图形标题)
用latex格式控制符{控制部分用大括号括起来}
可以设置fontsize和colorxlabel()
ylabel()
text(x,y,说明)
gtext(说明)
legend(图例1,图例2,……)顺序要一一对应
subplot(m,n,p)图形分隔
-
坐标控制
- axis([xmin,xmax,ymin,ymax,zmin,zmax])坐标轴
axis equal:横纵等长
axis square:产生正方形坐标系
axis auto:使用默认设置
axis off:取消坐标轴
axis on:显示坐标轴
grid网格线
grid on
grid off
gridbox
box on
box off
box图形保持
hold on
hold off
hold on 和hold off,是相对使用的
前者的意思是,你在当前图的轴(坐标系)中画了一幅图,再画另一幅图时,原来的图还在,与新图共存,都看得到
后者表达的是,你在当前图的轴(坐标系)中画了一幅图,此时,状态是hold off,则再画另一幅图时,原来的图就看不到了,在轴上绘制的是新图,原图被替换了
图形修饰处理
视点处理
方位角,仰角
view(az,el)
az为方位角默认-37.5°,el为仰角,默认30°
色彩处理colormap
数据统计分析
求最大元素与最小元素
max():求向量或矩阵的最大元素
min():求向量或矩阵的最小元素
参数为向量有两种调用格式:
- y=max(x):返回向量x的最大值存入y,如果x中包含复数元素,则按模取最大值。
- [y,k]=max(x):返回向量x的最大值存入y,最大值元素的序号存入k,如果x中包含复数元素,则按模取最大值。
如,求向量x的最大元素,其中x=[-43,72,9,16,23,47]
y=max()
y=72
[y,k]=max(x)
y=72
k=2
参数为矩阵时,函数有三种调用格式:
- max(A):返回一个行向量,向量的第i个元素是矩阵A的第i列上的最大值
- [Y,U]=max(A):返回行向量Y和U,Y记录A的每列最大值,U记录每列最大值的行号
- max(A,[],dim):dim取1是,该函数的功能和max(A)完全相同;dim取2时,该函数返回一个列向量,其第i个元素是A矩阵的第i行上最大值
提问:
- 用什么方法指调用一次max函数就能求得整个矩阵的最大值?
- 将矩阵按行堆叠,取最大值:max(A(:))
求平均值和中值
mean():求算数平均值
median():求中值
调用方式与max、min基本相同
求和与求积
sum():
prod():求积函数
累加和与累乘积
cumsum():
cumprod():求得是阶乘向量
求标准差与相关系数
std():计算标准差
标准差计算公式:
调用格式:
- std(x):计算向量x的标准差。
- std(A):计算矩阵A的各列的标准差
- std(A,flag,dim):flag取0或1,flag=0时,按S1所列公式计算样本标准差;flag=1时,按S2所列公式计算标准差。默认情况下,flag=0,dim=1
dim是dimension的意思,维度,dim=1是列,dim=2是行
corrcoef:相关系数函数
调用格式
[R = corrcoef(A)] %返回由矩阵A所形成的一个相关系数矩阵,其中第i行第i列的元素表示原矩阵A中第i列和第j列元素
[R = corrcoef(A,B)] %输入参数为两列
排序
sort()
sort(A,dim,'ascend/descned')
多项式计算
多项式的表示
- 多项式稀疏向量的顺序是从高到低
- 多项式稀疏向量包含0次项稀疏,所以其长度为多项式最高次加1
- 有的项没有,需要用0补足
多项式的四则运算
- 加减运算
- 乘法
conv(p1,p2)
p1,p2是多项式系数向量 - 除法
[Q,r]=deconv(p1,p2)
其中Q为p1除以p2的商式,r返回p1除以p2的余式,仍是系数向量
多项式的求导
函数polyder()
p=polyder(P):求多项式p的导函数
p=polyder(P,Q):P·Q的导函数
[p,q]=polyder(P,Q):求P/Q的导函数,导函数分子存入p,分母存入q
多项式的求值
代数多项式求值:polyval()
矩阵多项式求值:polyvalm() m代表matrix
多项式的求根
函数roots()
若已知多项式的全部根,可以用poly函数p=poly(x)
建立起该多项式
数值微分、积分
向前差分
向后差分
中心差分
数值微分的实现
向前差分函数:diff(相当于是求导)
- dx=diff(x):计算向前差分,dx(i)=x(i+1)-x(i),
- dx=diff(x,n):计算x的n阶向前差分,例如diff(x,2)=diff(diff(x))
- dx=diff(A,n,dim):计算矩阵A的差分,dim=1按列,dim=2按行
找到原函数,用牛顿莱布尼茨公式
数值积分的实现:
将[a,b]分成n个子区间,变成下面问题求解:
- 自适应辛普森法
[l,n]=quad(filename,a,b,tol,trace)
- 自适应Gauss-Lobatto方法
[l,n]=quadl(filename,a,b,tol,trace)
其中filename是被积函数名;a,b分别是定积分下限和上限,积分上下限必须是有限的,不能为无穷大;tol用来控制积分精度,默认取;trace控制是否展现积分过程,若取非零则展现过程,若取0则不展现;;返回参数l即定积分的值,n为被积函数调用次数
- 自适应高斯-克朗罗德方法:`[l,err]=quadgk(filename,a,b)
err返回近似误差范围,积分上下限可以是无穷大(-Inf或Inf),也可以是复数。
- 基于梯形积分法
-
I=trapz(x,y)
:其中向量x,y对应函数关系式y=f(x)
积分近似值为
可以用以下语句实现:sum(diff(x)*(y(1:end-1)+y(2:end))/2)
int与quad区别
int的积分可以是定积分,也可以是不定积分(即有没有积分上下限都可以积)可以得到解析的解,比如你对x2积分,得到的结果是1/3*x3,这是通过解析的方法来解的。如果int(x^2,x,1,2)得到的结果是7/3
quad是数值积分,它只能是定积分(就是有积分上下限的积分),它是通过simpson数值积分来求得的(并不是通过解析的方法得到解析解,再将上下限代入,而是用小梯形的面积求和得到的)。如果f=inline('x.^2');quad(f,1,2)得到的结果是2.333333,这个数并不是7/3
线性方程组求解
直接法:
已矩阵初等变换为基础,可以求得方程组精确解;占用内存大、程序实现复杂;一般适合求解低阶稠密线性方程组
(1) 利用左除运算符
Ax=b-->x=A\b(若矩阵A是奇异的或接近奇异的,MATLAB会警告)不建议用逆矩阵的方法
(2)利用矩阵分解
- LU分解
将一个n阶矩阵表示为一个下三角矩阵和一个上三角矩阵的乘积
A=LU可以写成LUx=b
[L,U]=lu(A)
:注意A必须是方阵,产生上三角阵U,和一个变换形式的下三角阵L
[L,U,P]=lu(A)
:产生一个上三角阵U和一个下三角阵L,还有一个置换矩阵P,使之PA=LU。
L=-tril(A,k)
:k=0指主对角线,k>0指主对角线以上的第k条对角线;k<0指主对角线以下的第k条线
U=-triu(A,k)
- QR分解
- Cholesky分解
- 高斯消去法
- 列主元消去法
- 矩阵的三角分解法
迭代法
从给定初始值逐步毕竟精确解,占用内存小,程序设计简单;适用于求解大型稀疏矩阵线性方程组;要考虑算法的收敛性。
- 雅克比迭代法
A=D-L-U
怎么算线性方程组,我确实不太会。。哭了。。