matlab第四讲
2024版matlab教程(全)资料ppt课件
进行通信系统的建模、仿真和分析。
谢谢聆听
B
C
变量与赋值
在MATLAB中,变量不需要事先声明,可以 直接赋值。变量名以字母开头,可以包含字 母、数字和下划线。
常用函数
MATLAB提供了丰富的内置函数,如sin、 cos、tan等三角函数,以及abs、sqrt等数 学函数。用户可以通过help命令查看函数的
D
使用方法。
02 矩阵运算与数组操作
错误处理
阐述try-catch错误处理机制的语法、 执行流程及应用实例。
04
函数定义与调用
函数概述
阐述函数的概念、作用及分类,包括内置函数和 自定义函数。
函数调用
深入剖析函数的调用方法,包括直接调用、间接 调用及参数传递等技巧。
ABCD
函数定义
详细讲解自定义函数的定义方法,包括函数名、 输入参数、输出参数及函数体等要素。
拟合方法
利用已知数据点构造近似函数,如最小二乘法、多项 式拟合、非线性拟合等。
插值与拟合的比较
插值函数经过所有数据点,而拟合函数则追求整体上 的近似。
数值积分与微分
01
数值积分方法
利用数值技术计算定积分的近似 值,如矩形法、梯形法、辛普森 法等。
02
数值微分方法
通过数值技术求解函数的导数或 微分,如差分法、中心差分法、 五点差分法等。
02
01
矩阵运算
加法与减法
对应元素相加或相减,要求矩阵 大小相同
乘法
使用`*`或`mtimes`函数进行矩阵 乘法,要求内维数相同
点乘与点除
使用`.*`、`./`进行对应元素相乘或 相除,要求矩阵大小相同
特征值与特征向量
第四讲 MATLAB绘图
希腊字母、上标、下标、数学符号、字型:
\ alpha \ beta \ gamma \ pi \ tall
\ Delta
\ delta
\ Omega
a2 a^{2} a2 a _{2} \ inf ty \ times \ oplus \ otimes
t = -pi:pi/100:pi; y = sin(t); plot(t,y) axis([-pi pi -1 1]) xlabel('-\pi \leq {\itt} \leq \pi’, 'FontSize',16) ylabel('sin(t) ', 'FontSize',16) title('Graph of the sine function') text(1,-1/3,'{\itNote the odd symmetry.}')
plot(x1, y1, 选项1, x2, y2, 选项2, …, xn, yn, 选项n) plot (x, y, ‘color_linestyle_marker’) 例 : plot (x, y, ‘y:square’)
color_linestyle_marker
Color strings are 'c', 'm', 'y', 'r', 'g', 'b', 'w', and 'k'. These correspond to cyan, magen, white, and black.
%加图形标题
xlabel('independent variable X');
matlab教程ppt(完整版)
可以使用`'`运算符对矩阵进行 转置。
矩阵高级运算
01
逆矩阵
可以使用`inv`函数求矩阵的逆矩阵 。
行列式
可以使用`det`函数求矩阵的行列式 。
03
02
特征值和特征向量
可以使用`eig`函数求矩阵的特征值 和特征向量。
秩
可以使用`rank`函数求矩阵的秩。
04
04
matlab绘图功能
绘图基本命令
控制设计
MATLAB提供了控制系统设计和分析 工具箱,可以方便地进行控制系统的 建模、分析和优化。
03
信号处理
MATLAB提供了丰富的信号处理工具 箱,可以进行信号的时域和频域分析 、滤波器设计等操作。
05
04
图像处理
MATLAB提供了图像处理工具箱,可 以进行图像的增强、分割、特征提取 等操作。
02
matlab程序调试技巧分享
01
调试模式
MATLAB提供了调试模式,可以 逐行执行代码,查看变量值,设 置断点等。
日志输出
02
03
错误处理
通过使用fprintf函数,可以在程 序运行过程中输出日志信息,帮 助定位问题。
MATLAB中的错误处理机制可以 帮助我们捕获和处理运行时错误 。
matlab程序优化方法探讨
显示结果
命令执行后,结果将在命令窗口中显示。
保存结果
可以使用`save`命令将结果保存到文件中。
matlab变量定义与赋值
定义变量
使用`varname = value`格式定义变 量,其中`varname`是变量名, `value`是变量的值。
赋值操作
使用`=`运算符将值赋给变量。例如 ,`a = 10`将值10赋给变量a。
第4章 MATLAB图像显示讲解
第四章图像显示M a t l a b进行图像处理的步骤如下:↓↓↓↓【目录】一、读图像和图像信息 (2)1、读取图像 (2)2、读取图像信息 (4)二、图像显示 (6)1、i m s h o w(I,n) (6)2、i m s h o w(I,[l o w,h i g h]) (7)3、i m s h o w(B W) (8)4、i m s h o w(X,M A P) (12)5、i m s h o w(R G B) (13)6、显示多帧图像序列 (14)7、i m s h o w f i l e n a m e (17)8、s u b i m a g e (17)三、保存图像 (18)1、i m w r i t e函数 (18)四、图像数据格式转换 (19)07-11、索引图像 (19)2、灰度图像 (19)3、真彩色图像 (20)4、二值图像 (20)一、读图像和图像信息1、读取图像函数i m r e a d可以从任何M a t l a b支持的图像文件格式中,以任意位深度读取一幅图像。
格式为:[X,M A P]=i m r e a d('F I L E N A M E.F M T'),其中:F I L E N A M E-为需要读入的图像文件名称,F M T-为图像格式。
【例】图像读取演示[X1,M A P1]=i m r e a d('演示图像-1位黑白.t i f');[X2,M A P2]=i m r e a d('演示图像-8位灰度.t i f');[X3,M A P3]=i m r e a d('演示图像-256色.t i f');[X4,M A P4]=i m r e a d('演示图像-16位灰度.t i f');[X5,M A P5]=i m r e a d('演示图像-24位色.t i f');[X6,M A P6]=i m r e a d('演示图像-48位色.t i f');07-207-3w h o sN a m e S i z e B y t e s C l a s sM A P10x00d o u b l e a r r a yM A P20x00d o u b l e a r r a yM A P3256x36144d o u b l e a r r a yM A P40x00d o u b l e a r r a yM A P50x00d o u b l e a r r a yM A P60x00d o u b l e a r r a yX1427x427182329l o g i c a l a r r a yX2427x427182329u i n t8a r r a yX3427x427182329u i n t8a r r a yX4427x427364658u i n t16a r r a yX5427x427x3546987u i n t8a r r a yX6427x427x31093974u i n t16a r r a yG r a n d t o t a l i s1824058e l e m e n t s u s i n g2558750b y t e s2、读取图像信息可以通过调用i m f i n f o函数获得与图像文件有关的信息,格式如下:I N F O=i m f i n f o('F I L E N A M E.F M T')其中:返回的I N F O是M a t l a b的一个结构体。
第4讲 MATLAB作图
在区间[0,10*pi]画出参数曲线x=sin(t),y=cos(t), z=t. 解 t=0:pi/50:10*pi; plot3(sin(t),cos(t),t) Matlab liti8 rotate3d %旋转
2、多条曲线 、 PLOT3(x,y,z)
其中x,y,z是都是m*n矩阵,其对应的每一列表示一条曲线. 例 画多条曲线观察函数Z=(X+Y).^2. 解 x=-3:0.1:3;y=1:0.1:5; [X,Y]=meshgrid(x,y); Z=(X+Y).^2; plot3(X,Y,Z) Matlab liti9
例 在区间[0,2*pi]画sin(x)的图形,并加注图例“自变量 X”、“函数Y”、“示意图”, 并加格栅. 解 x=linspace(0,2*pi,30); y=sin(x); plot(x,y) xlabel('自变量X') ylabel(' ylabel('函数Y') Y') title('示意图') grid on Matlab liti2
(3)meshz(X,Y,Z) 在网格周围画一个curtain图(如,参考平面) 例 绘peaks的网格图
解 输入命令: [X,Y]=meshgrid(-3:.125:3); Z=peaks(X,Y); Meshz(X,Y,Z) Matlab liti36
返回
图 形 处 理
在图形上加格栅、 在图形上加格栅、图例和标注 定制坐标 图形保持 分割窗口 缩放图形 改变视角 动 画
例 在[-1,2]上画 y = e
解
2x
+ sin(3x 2 ) 的 图形
Matlab liti43
MATLAB经典教程(全)PPT课件
THANKS FOR WATCHING
感谢您的观看
信号时域分析和频域分析
时域分析
研究信号随时间变化的规律,包括波形、幅度、频率、相位等。
频域分析
将信号转换为频域表示,研究信号的频谱结构和频率特性,包括幅 度谱、相位谱、功率谱等。
时域与频域关系
时域和频域是信号分析的两个方面,它们之间存在对应关系,可以 通过傅里叶变换相互转换。
数字信号处理基础
数字信号表示
MATLAB工作环境与界面
MATLAB工作环境
包括命令窗口、工作空间、命令历史窗口、当 前文件夹窗口等。
界面介绍
详细讲解MATLAB界面的各个组成部分,如菜 单栏、工具栏、编辑器窗口等。
基本操作
介绍如何在MATLAB环境中创建、保存、运行脚本和函数,以及如何进行基本 的文件操作。
基本数据类型与运算
数据统计描述性分析
描述性统计量
介绍均值、中位数、众数、方差、标准差等常见 描述性统计量的计算方法和意义。
数据分布形态
通过直方图、箱线图等图形展示数据的分布形态 ,帮助用户了解数据的整体特征。
数据间关系
探讨协方差、相关系数等统计量在揭示数据间关 系方面的应用。
数据可视化方法
二维图形绘制
详细讲解MATLAB中二维图形的绘制方法,包括线图、散点图、 柱状图等。
特征值与特征向量
特征值与特征向量的定义
设A为n阶方阵,若存在数λ和n维非零向量x,使得Ax=λx ,则称λ为A的特征值,x为A的对应于特征值λ的特征向量 。
特征值与特征向量的性质
包括特征值的和等于方阵对角线元素之和、特征值的积等 于方阵的行列式等性质。
MATLAB求解
使用MATLAB内置函数`eig`求解方阵的特征值和特征向量 。
第四讲 MATLAB与EXCEL数据交互
2 读取数据xlsread函数
xlsread函数语法 1.[ data,textdate]= xlsread(filename) 输入参数: Filename:目标文件地址(若文件在matlab当前 的工作目录中,Filename为’文件名’,如果文件 不在matlab当前的工作目录中,filename为’文件 路径\文件名’) 输出参数: Data: 数值数据 Textdate: 文字数据
2.data= xlsread(filename, sheet, raቤተ መጻሕፍቲ ባይዱge) 输入参数:
Filename:目标文件地址(若文件在matlab当前的 工作目录中,Filename为’文件名’,如果文件 不在matlab当前的工作目录中,filename为’文 件路径\文件名’)
Sheet:数据表名称,例如excel默认表名称sheet1。 Range:数据所在位置,例如A1,B13等 输出参数:
4.3 Excel2007加载与使用宏 加载方法: 点击excel的office按钮点击excel选项在加载项中 点击 转到见下图
浏览(matlab的安装路径)toolbox文件夹 exlink文件夹 excllink.xla文件(打开)
使用方法: excel2007加载项下可以发现exlink相关的按钮, 具体使用方法与exlink在excel2003中的使用方 法一样。
目录
中,filename为’文件路径\文件名’); M: 写入excel中的数据,M存储数据的变量名称; Sheet: 写入excel中的sheet名称( 可选,若空默认sheet1); Range:写入excel中的单元格区域(可选,若空默认’A1’); 输出参数: status: 写入状态 “1”表示写入成功“0”表示写入失败 message: 若失败,则显现失败信息
matlab第四讲PPT课件
如需在同一窗口中布置独立的子图,则可在plot命令前加 上subplot命令将一个窗口划分为多个区域,每个区域一幅 子图。
语法:
subplot(m,n,k) 前图
%使m*n幅子图中的第k幅成为当
子图排列次序:先向右后向下
例:画4个子图
>>x=0:0.1:2*pi subplot(2,2,1) %分割为2*2个子图,左上方为当前图
(2)步骤2一般在图形较多的情况下,需要 指定图形窗口、子图时使用。
(3)除步骤1、2、3的其他步骤,可根据需 要改变前后次序。
4.1.3 多个图形绘制的方法
指定图形窗口
前面介绍的plot命令,绘制图形都是在默认 的Figure No.1窗口中,重复使用plot命令时, 后绘制的图形就将前面绘制的图形覆盖了。
plot(x,sin(x)) subplot(2,2,2) %右上方为当前图
plot(x,cos(x))
subplot(2,2,3) plot(x,sin(3*x))
subplot(224) 略逗号
plot(x,cos(3*x))
%左下方为当前图 %右下方为当前图,省
绘图后使用clf命令清除图形窗。 例:>>clf
(2)如果x是矩阵,而y是向量,则y的长度必须等于x的行 数或列数,绘制的方法与前述方法相似。
(3)如果x和y都是矩阵,则大小必须相同,将矩阵x的每列 和y的每列画一条曲线。
例:>>x1=[1 2 3]
y1=[1 2 3;4 5 6]
plot(x1,y1)
%每行1条曲线,第一条包含
(1,1)(2,2)(3,3),第二条包含(1,4)(2,5)(3,6)
用plot(x1,y1,x2,y2,…)命令绘制多条曲线
四讲Matlab绘图ppt课件
2024/2/12
8
一、二维图形
h o m e 移动光标到命令窗口的左上角。
hold on 保持当前图形。允许在当前图 形状态下,使用同样的缩放比例加入另 一个图形。
hold off 释放图形窗口,这样下一个图 形将称为当前图形。这是缺省状态。
h o l d 在hold on和hold off之间 进行切换。
2024/2/12
9
一、二维图形
subplot(m,n,p)将
图形窗口分割成m行n列,并设置p所指定
的子窗口为当前窗口。子窗口按行由左
至右,由上至下进行编号。这一命令在 M AT L A B的当前版本中也被写作s u b p l o t ( m n p )。
s u b p l o t 设置图形窗口为缺省模 式,即单窗口模式。等价于s u b p l o t ( 1 , 1 , 1 )。
2024/2/12
24
三、三维图形
•p l o t 3 ( x 1 , y 1 , z 1 , str1,x2,y2,z2,s t r 2 ,. . .)用字符串s t r 1确定的 线型和颜色对x 1 , y 1 , z 1绘图,用字符 串s t r 2确定的线型和颜色对x2, y2, z2 绘图. . .。如果省略s t r 1 , s t r 2,. . ., M AT L A B将自动选择线型和颜色。
2024/2/12
25
三、三维图形
m e s h ( X,Y,Z ) 将矩阵Z中的各个
元素作为矩形网格上的高度,对这些值 绘图,并且将相邻的点连接形成三维网 格表面图。颜色由高度,即Z中的元素指 定。
s u r f ( X , Y , Z) 绘制出由坐标
第四章___matlab_绘图
例,绘制阶梯曲线 x=0:pi/20:2*pi;y=sin(x);stairs(x,y)
1
0 .8
0 .6
0 .4
0 .2
0
-0 .2
-0 .4
-0 .6
-0 .8
-1
0
1
2
3
4
5
6
7
例:阶梯绘图
h2=[1 1;1 -1];h4=[h2 h2;h2 -h2]; h8=[h4 h4;h4 -h4];t=1:8; subplot(8,1,1);stairs(t,h8(1,:));axis('off') subplot(8,1,2);stairs(t,h8(2,:));axis('off') subplot(8,1,3);stairs(t,h8(3,:));axis('off') subplot(8,1,4);stairs(t,h8(4,:));axis('off') subplot(8,1,5);stairs(t,h8(5,:));axis('off') subplot(8,1,6);stairs(t,h8(6,:));axis('off') subplot(8,1,7);stairs(t,h8(7,:));axis('off') subplot(8,1,8);stairs(t,h8(8,:));axis('off')
1 0.8 0.6 0.4 0.2
0 -0.2 -0.4
y
y1 y2
例 3:y=sin(t);y1=sin(t+0.25);y2=sin(t+0.5); y3=cos(t);y4=cos(t+0.25);y5=cos(t+0.5); plot(t,[y',y1',y2',y3',y4',y5'])
4-插值法
jk jk
(j,k=0,1)
称l0 (x)及l1 (x)为线性插值基函数。
2. 抛物插值:n=2情形 假定插值节点为x0, x1, x2 ,求二次插值多项式 L2 (x), 使 L2(xj)=yj (j=0,1,2) y= L2 (x)的几何意义就是过 (x0, y0),(x1, y1) ,(x2, y2) 三点的抛物线。 采用基函数方法,设 L2 (x)=l0(x)y0+l1(x)y1+l2(x)y2 此时基函数l0(x), l1(x), l2(x)是二次函数,且在节点上满 足: l0(x0)=1 , l0(x1)=0 , l0(x2)=0. l1(x0)=0 , l1(x1)=1 , l1(x2)=0. l2(x0)=0 , l2(x1)=0 , l2(x2)=1.
故
( x x1 )( x x2 ) l0 ( x ) ( x0 x1 )( x0 x2 )
同理
( x x0 )( x x2 ) l1 ( x) ( x1 x0 )( x1 x2 ) ( x x0 )( x x1 ) l2 ( x ) ( x2 x0 )( x2 x1 )
4 x5 5x 4 2 x 2 1
(2) 特殊多项式的创建
(3)多项式的乘积
格式 p3=conv(p1,p2)
(4)多项式求值 格式 polyval(p,x0)
(5) 多项式符号表示 格式 poly2sym(p)
例:给出f(x)=lnx的数值表,用lagrange插值计算 ln0.54的近似值。
的线性组合得到,其系数分别为y0, y1。即
L1 ( x) l0 ( x) y0 l1 ( x) y1
显然, l0 (x)及l1 (x)也是线性插值多项式,在节点 x0,x1上满足条件: l0(x0)=1 , l0(x1)=0. l1(x0)=0 , l1(x1)=1. 即
第四讲 matlab 的符号运算
一、符号运算的基本操作
1. 什么是符号运算 • 与数值运算的区别
※ 数值运算中必须先对变量赋值, 然后才能参与运算。 ※ 符号运算无须事先对独立变量 赋值,运算结果以标准的符号形式 表达。
• 特点:
运算对象可以是没赋值的符号变量 可以获得任意精度的解
• Symbolic Math Toolbox——符号运
>> syms x t >> f1=(x-1)*(x-2)*(x-3); >> g1=collect(f1) %按x合并同类项 g1 = -6+x^3-6*x^2+11*x >> g1=expand(f1) g1 = -6+x^3-6*x^2+11*x
%多项式展开
• • • •
• • • • • • • • • •
3. horner函数 horner函数将符号表达式化简成嵌套的形式。 4. factor函数 factor函数将符号多项式进行因式分解,将多项式 分解成低阶多项式相乘,如果不能分解则返回原 来的符号多项式。
>> syms x t >> f1=x^3-6*x^2+11*x-6; >> g1=horner(f1) %转换为嵌套形式 g1 = -6+(11+(-6+x)*x)*x >> g12=factor(f1) g12 = (x-1)*(x-2)*(x-3) 5. pretty函数 pretty函数将符号表达式给出排版形式的输出结果。
• 1. 多项式符号表达式的通分 • [N,D] = numden(s)%提取多项式符号表达式s的分子 • • • •
• • • •
《MATLAB程序设计与应用》教学大纲
《MATLAB程序设计与应用》教学大纲一、课程介绍1.课程名称:MATLAB程序设计与应用2.适用对象:计算机科学与技术、软件工程、自动化等专业的本科生3.课程学分:3学分4.课程时长:36学时二、课程目标1.掌握MATLAB环境的基本操作和界面布局;2.理解MATLAB程序的基本语法和编程思想;3.能够利用MATLAB解决实际问题,并进行数据可视化;4.了解MATLAB在科学计算、图像处理、信号处理等领域的应用。
三、教学内容和安排1.第一讲:MATLAB入门-MATLAB环境介绍和基本操作;-MATLAB界面布局和常用工具;-MATLAB变量和数据类型。
2.第二讲:MATLAB基本算法-MATLAB算术运算和逻辑运算;-MATLAB矩阵和向量的操作;-MATLAB函数和脚本文件的编写。
3.第三讲:MATLAB流程控制-MATLAB条件语句和循环语句;-MATLAB函数和脚本文件的调用;-MATLAB调试和错误处理。
4.第四讲:MATLAB数据处理-MATLAB数据输入和输出;-MATLAB数据结构和文件操作;-MATLAB数据预处理和清洗。
5.第五讲:MATLAB数据可视化-MATLAB绘图命令和参数调整;-MATLAB二维和三维图像的绘制;-MATLAB图像保存和发布。
6.第六讲:MATLAB科学计算-MATLAB基本数值计算函数;-MATLAB数值积分和微分;-MATLAB符号计算和矩阵运算。
7.第七讲:MATLAB图像处理-MATLAB图像读取和显示;-MATLAB图像增强和滤波;-MATLAB图像分割和识别。
8.第八讲:MATLAB信号处理-MATLAB信号生成和频谱分析;-MATLAB滤波器设计和滤波;-MATLAB音频处理和语音识别。
9.第九讲:MATLAB应用拓展-MATLAB工具箱和函数库的使用;-MATLAB应用案例分析;-MATLAB与其他编程语言的集成。
四、教学方法和评价方式1.教学方法-讲述理论知识,引导学生动手实践;-组织实例演示和案例讨论;-提供课后练习和编程作业。
导数及偏导数计算
第四讲导数及偏导数计算实验目的1.进一步理解导数概念及其几何意义.2.学习matlab的求导命令与求导法.实验内容1.学习matlab命令.建立符号变量命令sym和syms调用格式:x=sym('x'),建立符号变量x;syms x y z ,建立多个符号变量x,y,z;matlab求导命令diff调用格式:diff(函数) ,求的一阶导数;diff(函数, n) ,求的n阶导数(n是具体整数);diff(函数,变量名),求对的偏导数;diff(函数,变量名,n) ,求对的n阶偏导数;matlab求雅可比矩阵命令jacobian,调用格式:jacobian([函数;函数;函数], [])给出矩阵:2.导数概念.导数是函数的变化率,几何意义是曲线在一点处的切线斜率.(1)点导数是一个极限值.例3.1.设,用定义计算.解:在某一点的导数定义为极限:我们记,输入命令:syms h;limit((exp(0+h)-exp(0))/h,h,0)得结果:ans=1.可知(2)导数的几何意义是曲线的切线斜率.例 3.2.画出在处()的切线及若干条割线,观察割线的变化趋势.解:在曲线上另取一点,则的方程是:.即取,分别作出几条割线.h=[3,2,1,0.1,0.01];a=(exp(h)-1)./h;x=-1:0.1:3;plot(x,exp(x), 'r.');hold onfor i=1:5;plot(h(i),exp(h(i)),'r.') plot(x,a(i)*x+1)endaxis square作出在处的切线plot(x,x+1, 'r.')从图上看,随着与越来越接近,割线越来越接近曲线的割线.3.求一元函数的导数.(1)的一阶导数.例3.3.求的导数.解:打开matlab指令窗,输入指令:>>syms x; dy_dx=diff(sin(x)/x)得结果:dy_dx=cos(x)/x-sin(x)/x^2.matlab的函数名允许使用字母、空格、下划线及数字,不允许使用其他字符,在这里我们用dy_dx表示例3.4.求的导数.解: 输入命令:dy_dx=diff(log(sin(x)))得结果:dy_dx=cos(x)/sin(x).在matlab中,函数用log(x)表示,而log10(x)表示例3.5.求的导数.解: 输入命令:dy_dx=diff((x^2+2*x)^20).得结果:dy_dx=20*(x^2+2*x)^19*(2*x+2).注意输入时应为2*x.例3.6.求的导数.解: 输入命令:dy_dx=diff(x^x).得结果:dy_dx =x^x*(log(x)+1).利用matlab 命令diff一次可以求出若干个函数的导数.例3.7.求下列函数的导数:1.2.3.4.解: 输入命令:a=diff([sqrt(x^2- 2*x+5),cos(x^2)+2*cos(2*x),4^(sin(x)),log(log(x))]).得结果:a=[1/2/(x^2-2*x+5)^(1/2)*(2*x-2),-2*sin(x^2)*x-4*sin(2*x), 4^sin(x)*cos(x)*log(4),1/x/log(x)].dy1_dx=a(1)dy1_dx=1/2/(x^2-2*x+5)^(1/2)*(2*x-2).dy2_dx=a(2)dy2_dx=-2*sin(x^2)*x-4*sin(2*x).dy3_dx=a(3)dy3_dx=4^sin(x)*cos(x)*log(4).dy4_dx=a(4)dy4_dx=1/x/log(x).由本例可以看出,matlab函数是对矩阵或向量进行操作的,a(i)表示向量a的第i个分量.(2)参数方程所确定的函数的导数.设参数方程确定函数,则的导数例3.8.设,求解: 输入命令:dx_dt=diff(a*(t-sin(t)));dy_dt=diff(a*(1-cos(t)));dy_dx=dy_dt/dx_dt.得结果:dy_dx=sin(t)/(1-cos(t)).其中分号的作用是不显示结果.4.求多元函数的偏导数.例3.9.设求 u的一阶偏导数.解: 输入命令:diff((x^2+y^2+z^2)^(1/2), x).得结果:ans=1/(x^2+y^2+z^2)^(1/2)*x.在命令中将末尾的x换成y将给出y的偏导数:ans=1/(x^2+y^2+z^2)^(1/2)*y.也可以输入命令:jacobian((x^2+y^2+z^2)^(1/2),[x y]).得结果:ans=[1/(x^2+y^2+z^2)^(1/2)*x, 1/(x^2+y^2+z^2)^(1/2)*y]给出矩阵例3.10.求下列函数的偏导数:1.2.解: 输入命令:diff(atan(y/x).得结果:ans=-y/x^2/(1+y^2/x^2).输入命令:diff(atan(y/x), y).得结果:ans=1/x/(1+y^2/x^2).输入命令:diff(x^y, x).得结果:ans=x^y*y/x.输入命令:diff(x^y, y).得结果:ans=x^y*log(x).使用jacobian命令求偏导数更为方便.输入命令:jacobian([atan(y/x),x^y],[x,y]).得结果:ans=[ -y/x^2/(1+y^2/x^2),1/x/(1+y^2/x^2)][x^y*y/x,x^y*log(x)].5.求高阶导数或高阶偏导数.例3.11.设,求.解:输入指令:diff(x^2*exp(2*x),x,20).得结果:ans =99614720*exp(2*x)+20971520*x*exp(2*x)+1048576*x^2*exp(2*x)例3.12.设,求,,解:输入命令:diff(x^6-3*y^4+2*x^2*y^2,x,2)可得到:ans=30*x^4+4*y^2.将命令中最后一个x换为y得:ans=-36*y^2+4*x^2.输入命令:diff(diff(x^6-3*y^4+2*x^2*y^2,x),y)可得:ans=8*x*y同学们可自己计算比较它们的结果.注意命令:diff(x^6-3*y^4+2*x^2*y^2,x,y),是对y求偏导数,不是求6.求隐函数所确定函数的导数或偏导数例3.13.设,求解:,先求,再求输入命令:df_dx=diff(log(x)+exp(-y/x)-exp(1),x)得到:df_dx=1/x+y/x^2*exp(-y/x).输入命令:df_dy=diff(log(x)+exp(-y/x)-exp(1),y)得到:df_dy=-1/x*exp(-y/x)输入命令:dy_dx=-df_dx/df_dy可得所求结果:dy_dx=-(-1/x-y/x^2*exp(-y/x))*x/exp(-y/x).例3.14.设,求,解:输入命令:a=jacobian(sin(x*y)+cos(y*z)+tan(z*x),[x,y,z])可得矩阵a=[cos(x*y)*y+(1+tan(z*x)^2)*z,cos(x*y)*x-sin(y*z)*z,-sin(y*z)*y+(1+tan(z*x)^2)*x].输入命令:dz_dx=-a(1)/a(3)得:dz_dx=(-cos(x*y)*y-(1+tan(z*x)^2)*z)/(-sin(y*z)*y+(1+tan(z*x)^2)*x)输入命令:dz_dy=-a(2)/a(3)得:dz_dy=(-cos(x*y)*x+sin(y*z)*z)/(-sin(y*z)*y+(1+tan(z*x)^2)*x)练习1.求下列函数的导数. (1))11)(1(-+=x x y (2)x x x y ln sin = (3)221sin 2x y = (4))ln(22a x x y ++=2.求下列参数方程所确定的函数的导数. (1)⎩⎨⎧==t y t x 44 (2)⎩⎨⎧-=+=arctgt t y t x )1ln(23.求下列隐函数的导数. (1)22ln y x x y arctg += (2)x y y x =4.设x e y x cos =,求)4(y .5.验证x e y x sin =满足关系式:022=+'-''y y y6.求下列函数的偏导数.(1))sin(2xy x z = (2)zy x u ⎪⎭⎫ ⎝⎛= 7.设)ln(y x x u +=,求22x u ∂∂,22y u∂∂,y x u ∂∂∂2.8.求下列多元隐函数的偏导数y zx z ∂∂∂∂,.(1)1cos cos cos 222=++z y x (2)xyze z =9.证明函数22)()(ln b y a x u -+-=(b a ,为常数)满足拉普拉斯方程: 02222=∂∂+∂∂y u x u(提示:对结果用simplify 化简)(注:本资料素材和资料部分来自网络,仅供参考。
Matlab求解微分方程(组)及偏微分方程(组)
第四讲 Matlab 求解微分方程(组)理论介绍:Matlab 求解微分方程(组)命令 求解实例:Matlab 求解微分方程(组)实例实际应用问题通过数学建模所归纳得到的方程,绝大多数都是微分方程,真正能得到代数方程的机会很少.另一方面,能够求解的微分方程也是十分有限的,特别是高阶方程和偏微分方程(组).这就要求我们必须研究微分方程(组)的解法:解析解法和数值解法. 一.相关函数、命令及简介1.在Matlab 中,用大写字母D 表示导数,Dy 表示y 关于自变量的一阶导数,D2y 表示y 关于自变量的二阶导数,依此类推.函数dsolve 用来解决常微分方程(组)的求解问题,调用格式为:X=dsolve(‘eqn1’,’eqn2’,…)函数dsolve 用来解符号常微分方程、方程组,如果没有初始条件,则求出通解,如果有初始条件,则求出特解.注意,系统缺省的自变量为t2.函数dsolve 求解的是常微分方程的精确解法,也称为常微分方程的符号解.但是,有大量的常微分方程虽然从理论上讲,其解是存在的,但我们却无法求出其解析解,此时,我们需要寻求方程的数值解,在求常微分方程数值解方面,MATLAB 具有丰富的函数,我们将其统称为solver ,其一般格式为:[T,Y]=solver(odefun,tspan,y0)说明:(1)solver 为命令ode45、ode23、ode113、ode15s 、ode23s 、ode23t 、ode23tb 、ode15i 之一.(2)odefun 是显示微分方程'(,)y f t y =在积分区间tspan 0[,]f t t =上从0t 到f t 用初始条件0y 求解.(3)如果要获得微分方程问题在其他指定时间点012,,,,f t t t t 上的解,则令tspan 012[,,,]f t t t t =(要求是单调的).(4)因为没有一种算法可以有效的解决所有的ODE 问题,为此,Matlab 提供了多种求解器solver ,对于不同的ODE 问题,采用不同的solver.表1 Matlab中文本文件读写函数说明:ode23、ode45是极其常用的用来求解非刚性的标准形式的一阶微分方程(组)的初值问题的解的Matlab常用程序,其中:ode23采用龙格-库塔2阶算法,用3阶公式作误差估计来调节步长,具有低等的精度.ode45则采用龙格-库塔4阶算法,用5阶公式作误差估计来调节步长,具有中等的精度.3.在matlab命令窗口、程序或函数中创建局部函数时,可用内联函数inline,inline函数形式相当于编写M函数文件,但不需编写M-文件就可以描述出某种数学关系.调用inline函数,只能由一个matlab表达式组成,并且只能返回一个变量,不允许[u,v]这种向量形式.因而,任何要求逻辑运算或乘法运算以求得最终结果的场合,都不能应用inline函数,inline函数的一般形式为:FunctionName=inline(‘函数内容’, ‘所有自变量列表’)例如:(求解F(x)=x^2*cos(a*x)-b ,a,b是标量;x是向量)在命令窗口输入:Fofx=inline(‘x .^2*cos(a*x)-b’ , ‘x’,’a’,’b’); g= Fofx([pi/3 pi/3.5],4,1) 系统输出为:g=-1.5483 -1.7259注意:由于使用内联对象函数inline 不需要另外建立m 文件,所有使用比较方便,另外在使用ode45函数的时候,定义函数往往需要编辑一个m 文件来单独定义,这样不便于管理文件,这里可以使用inline 来定义函数. 二.实例介绍1.几个可以直接用Matlab 求微分方程精确解的实例 例1 求解微分方程2'2x y xy xe -+=程序:syms x y; y=dsolve(‘Dy+2*x*y=x*exp(-x^2)’,’x ’)例 2 求微分方程'0x xy y e +-=在初始条件(1)2y e =下的特解并画出解函数的图形.程序:syms x y; y=dsolve(‘x*Dy+y-exp(1)=0’,’y(1)=2*exp(1)’,’x ’);ezplot(y)例 3 求解微分方程组530tdx x y e dtdy x y dt⎧++=⎪⎪⎨⎪--=⎪⎩在初始条件00|1,|0t t x y ====下的特解并画出解函数的图形.程序:syms x y t[x,y]=dsolve('Dx+5*x+y=exp(t)','Dy-x-3*y=0','x(0)=1','y(0)=0','t') simple(x); simple(y)ezplot(x,y,[0,1.3]);axis auto2.用ode23、ode45等求解非刚性标准形式的一阶微分方程(组)的初值问题的数值解(近似解)例 4 求解微分方程初值问题2222(0)1dy y x xdx y ⎧=-++⎪⎨⎪=⎩的数值解,求解范围为区间[0,0.5].程序:fun=inline('-2*y+2*x^2+2*x','x','y');[x,y]=ode23(fun,[0,0.5],1); plot(x,y,'o-')例 5 求解微分方程22'2(1)0,(0)1,(0)0d y dyy y y y dt dtμ--+===的解,并画出解的图形.分析:这是一个二阶非线性方程,我们可以通过变换,将二阶方程化为一阶方程组求解.令12,,7dyx y x dtμ===,则 121221212,(0)17(1),(0)0dx x x dtdx x x x x dt⎧==⎪⎪⎨⎪=--=⎪⎩ 编写M-文件vdp.m function fy=vdp(t,x)fy=[x(2);7*(1-x(1)^2)*x(2)-x(1)]; end在Matlab 命令窗口编写程序 y0=[1;0][t,x]=ode45(@vdp,[0,40],y0);或[t,x]=ode45('vdp',[0,40],y0); y=x(:,1);dy=x(:,2); plot(t,y,t,dy)练习与思考:M-文件vdp.m 改写成inline 函数程序? 3.用Euler 折线法求解Euler 折线法求解的基本思想是将微分方程初值问题00(,)()dyf x y dxy x y ⎧=⎪⎨⎪=⎩ 化成一个代数(差分)方程,主要步骤是用差商()()y x h y x h +-替代微商dydx,于是00()()(,())()k k k k y x h y x f x y x h y y x +-⎧=⎪⎨⎪=⎩记1,(),k k k k x x h y y x +=+=从而1(),k k y y x h +=+于是0011(),,0,1,2,,1(,).k k k k k k y y x x x h k n y y hf x y ++=⎧⎪=+=-⎨⎪=+⎩例 6 用Euler 折线法求解微分方程初值问题22(0)1dyx y dxy y ⎧=+⎪⎨⎪=⎩的数值解(步长h 取0.4),求解范围为区间[0,2].分析:本问题的差分方程为00110,1,0.4,0,1,2,,1(,).k k k k k k x y h x x h k n y y hf x y ++===⎧⎪=+=-⎨⎪=+⎩程序:>> clear >> f=sym('y+2*x/y^2'); >> a=0; >> b=2; >> h=0.4; >> n=(b-a)/h+1; >> x=0; >> y=1;>> szj=[x,y];%数值解 >> for i=1:n-1y=y+h*subs(f,{'x','y'},{x,y});%subs ,替换函数 x=x+h; szj=[szj;x,y]; end >>szj>> plot(szj(:,1),szj(:,2))说明:替换函数subs 例如:输入subs(a+b,a,4) 意思就是把a 用4替换掉,返回 4+b ,也可以替换多个变量,例如:subs(cos(a)+sin(b),{a,b},[sym('alpha'),2])分别用字符alpha 替换a 和2替换b ,返回 cos(alpha)+sin(2)特别说明:本问题可进一步利用四阶Runge-Kutta 法求解,Euler 折线法实际上就是一阶Runge-Kutta 法,Runge-Kutta 法的迭代公式为001112341213243(),,(22),6(,),0,1,2,,1(,),22(,),22(,).k k k k k k k k k k k k y y x x x h h y y L L L L L f x y k n h h L f x y L h h L f x y L L f x h y hL ++=⎧⎪=+⎪⎪=++++⎪⎪=⎪=-⎨⎪=++⎪⎪⎪=++⎪⎪=++⎩相应的Matlab 程序为:>> clear >> f=sym('y+2*x/y^2'); >> a=0; >> b=2; >> h=0.4; >> n=(b-a)/h+1; >> x=0; >> y=1;>> szj=[x,y];%数值解 >> for i=1:n-1l1=subs(f, {'x','y'},{x,y});替换函数 l2=subs(f, {'x','y'},{x+h/2,y+l1*h/2}); l3=subs(f, {'x','y'},{x+h/2,y+l2*h/2}); l4=subs(f, {'x','y'},{x+h,y+l3*h}); y=y+h*(l1+2*l2+2*l3+l4)/6; x=x+h; szj=[szj;x,y]; end>>szj>> plot(szj(:,1),szj(:,2))练习与思考:(1)ode45求解问题并比较差异. (2)利用Matlab 求微分方程(4)(3)''20y y y -+=的解.(3)求解微分方程''2',2(1)0,030,(0)1,(0)0y y y y x y y --+=≤≤==的特解. (4)利用Matlab 求微分方程初值问题2''''00(1)2,|1,|3x x x y xy y y ==+===的解. 提醒:尽可能多的考虑解法 三.微分方程转换为一阶显式微分方程组Matlab 微分方程解算器只能求解标准形式的一阶显式微分方程(组)问题,因此在使用ODE 解算器之前,我们需要做的第一步,也是最重要的一步就是借助状态变量将微分方程(组)化成Matlab 可接受的标准形式.当然,如果ODEs 由一个或多个高阶微分方程给出,则我们应先将它变换成一阶显式常微分方程组.下面我们以两个高阶微分方程组构成的ODEs 为例介绍如何将它变换成一个一阶显式微分方程组.Step 1 将微分方程的最高阶变量移到等式左边,其它移到右边,并按阶次从低到高排列.形式为:()'''(1)'''(1)()'''(1)'''(1)(,,,,,,,,,,)(,,,,,,,,,,)m m n n m n x f t x x x x y y y y y g t x x x x y y y y ----⎧=⎨=⎩Step 2 为每一阶微分式选择状态变量,最高阶除外'''(1)123'''(1)123,,,,,,,,,m m n m m m m n x x x x x x x x x y x y x y x y--++++========注意:ODEs 中所有是因变量的最高阶次之和就是需要的状态变量的个数,最高阶的微分式不需要给它状态变量.Step 3 根据选用的状态变量,写出所有状态变量的一阶微分表达式''''122334123''12123,,,,(,,,,,),,(,,,,,)m m n m m m nm n x x x x x x x f t x x x x xx xg t x x x x +++++======练习与思考:(1)求解微分方程组**'''3312*'''3312()()22x x x y x r r y y y x y r r μμμμμμ⎧+-=+--⎪⎪⎨⎪=+--⎪⎩其中2r =1r =*1,μμ=-1/82.45,μ=(0) 1.2,x =(0)0,y ='(0)0,x ='(0) 1.049355751y =-(2)求解隐式微分方程组''''''''''''2235x y x y x y x y xy y ⎧+=⎨++-=⎩ 提示:使用符号计算函数solve 求'''',x y ,然后利用求解微分方程的方法 四.偏微分方程解法Matlab 提供了两种方法解决PDE 问题,一是使用pdepe 函数,它可以求解一般的PDEs,具有较大的通用性,但只支持命令形式调用;二是使用PDE 工具箱,可以求解特殊PDE 问题,PDEtoll 有较大的局限性,比如只能求解二阶PDE 问题,并且不能解决片微分方程组,但是它提供了GUI 界面,从复杂的编程中解脱出来,同时还可以通过File —>Save As 直接生成M 代码.1.一般偏微分方程(组)的求解(1)Matlab 提供的pdepe 函数,可以直接求解一般偏微分方程(组),它的调用格式为:sol=pdepe(m,@pdefun,@pdeic,@pdebc,x,t)@pdefun 是PDE 的问题描述函数,它必须换成标准形式:(,,)[(,,,)](,,,)m m u u u uc x t x x f x t u s x t u x t x x x-∂∂∂∂∂=+∂∂∂∂∂ 这样,PDE 就可以编写入口函数:[c,f,s]=pdefun(x,t,u,du),m,x,t 对应于式中相关参数,du 是u 的一阶导数,由给定的输入变量可表示出c,f,s 这三个函数.@pdebc 是PDE 的边界条件描述函数,它必须化为形式:(,,)(,,).*(,,,)0up x t u q x t u f x t u x∂==∂ 于是边值条件可以编写函数描述为:[pa,qa,pb,qb]=pdebc(x,t,u,du),其中a 表示下边界,b 表示上边界.@pdeic 是PDE 的初值条件,必须化为形式:00(,)u x t u =,故可以使用函数描述为:u0=pdeic(x)sol 是一个三维数组,sol(:,:,i)表示i u 的解,换句话说,k u 对应x(i)和t(j)时的解为sol(i,j,k),通过sol ,我们可以使用pdeval 函数直接计算某个点的函数值.(2)实例说明 求解偏微分2111222221220.024()0.17()u u F u u t xu u F u u tx ⎧∂∂=--⎪⎪∂∂⎨∂∂⎪=+-⎪∂∂⎩ 其中, 5.7311.46()x x F x e e -=-且满足初始条件12(,0)1,(,0)0u x u x ==及边界条件1(0,)0,u t x ∂=∂221(0,)0,(1,)1,(1,)0uu t u t t x∂===∂ 解:(1)对照给出的偏微分方程和pdepe 函数求解的标准形式,原方程改写为111221220.024()1.*()10.17u u F u u x u F u u u t x x ∂⎡⎤⎢⎥--⎡⎤⎡⎤⎡⎤∂∂∂=+⎢⎥⎢⎥⎢⎥⎢⎥-∂∂∂⎣⎦⎣⎦⎣⎦⎢⎥⎢⎥∂⎣⎦可见1121220.024()10,,,()10.17u F u u x m c f s F u u u x ∂⎡⎤⎢⎥--⎡⎤⎡⎤∂====⎢⎥⎢⎥⎢⎥-∂⎣⎦⎣⎦⎢⎥⎢⎥∂⎣⎦ %目标PDE 函数function [c,f,s]=pdefun(x,t,u,du) c=[1;1];f=[0.024*du(1);0.17*du(2)]; temp=u(1)-u(2);s=[-1;1].*(exp(5.73*temp)-exp(-11.46*temp)) end(2)边界条件改写为:下边界2010.*00f u ⎡⎤⎡⎤⎡⎤+=⎢⎥⎢⎥⎢⎥⎣⎦⎣⎦⎣⎦上边界1110.*000u f -⎡⎤⎡⎤⎡⎤+=⎢⎥⎢⎥⎢⎥⎣⎦⎣⎦⎣⎦%边界条件函数function [pa,qa,pb,qb]=pdebc(xa,ua,xb,ub,t) pa=[0;ua(2)]; qa=[1;0]; pb=[ub(1)-1;0]; qb=[0;1]; end(3)初值条件改写为:1210u u ⎡⎤⎡⎤=⎢⎥⎢⎥⎣⎦⎣⎦%初值条件函数 function u0=pdeic(x) u0=[1;0]; end(4)编写主调函数 clc x=0:0.05:1; t=0:0.05:2; m=0;sol=pdepe(m,@pdefun,@pdeic,@pdebc,x,t); subplot(2,1,1) surf(x,t,sol(:,:,1)) subplot(2,1,2) surf(x,t,sol(:,:,2))练习与思考: This example illustrates the straightforward formulation, computation, and plotting of the solution of a single PDE.2()u u t x xπ∂∂∂=∂∂∂ This equation holds on an interval 01x ≤≤ for times 0t ≥. The PDE satisfies the initial condition (,0)sin u x x π= and boundary conditions(0,)0;(1,)0t uu t e t xπ-∂=+=∂ 2.PDEtool 求解偏微分方程(1)PDEtool (GUI )求解偏微分方程的一般步骤在Matlab 命令窗口输入pdetool ,回车,PDE 工具箱的图形用户界面(GUI)系统就启动了.从定义一个偏微分方程问题到完成解偏微分方程的定解,整个过程大致可以分为六个阶段Step 1 “Draw 模式”绘制平面有界区域Ω,通过公式把Matlab 系统提供的实体模型:矩形、圆、椭圆和多边形,组合起来,生成需要的平面区域.Step 2 “Boundary 模式”定义边界,声明不同边界段的边界条件.Step 3 “PDE 模式”定义偏微分方程,确定方程类型和方程系数c,a,f,d ,根据具体情况,还可以在不同子区域声明不同系数.Step 4 “Mesh 模式”网格化区域Ω,可以控制自动生成网格的参数,对生成的网格进行多次细化,使网格分割更细更合理.Step 5 “Solve 模式”解偏微分方程,对于椭圆型方程可以激活并控制非线性自适应解题器来处理非线性方程;对于抛物线型方程和双曲型方程,设置初始边界条件后可以求出给定时刻t 的解;对于特征值问题,可以求出给定区间上的特征值.求解完成后,可以返回到Step 4,对网格进一步细化,进行再次求解.Step 6 “View 模式”计算结果的可视化,可以通过设置系统提供的对话框,显示所求的解的表面图、网格图、等高线图和箭头梯形图.对于抛物线型和双曲线型问题的解还可以进行动画演示.(2)实例说明用法求解一个正方形区域上的特征值问题:12|0u u u u λ∂Ω⎧-∆-=⎪⎨⎪=⎩ 正方形区域为:11,1 1.x x -≤≤-≤≤(1)使用PDE 工具箱打开GUI 求解方程(2)进入Draw 模式,绘制一个矩形,然后双击矩形,在弹出的对话框中设置Left=-1,Bottom=-1,Width=2,Height=2,确认并关闭对话框(3)进入Boundary 模式,边界条件采用Dirichlet 条件的默认值(4)进入PDE 模式,单击工具栏PDE 按钮,在弹出的对话框中方程类型选择Eigenmodes,参数设置c=1,a=-1/2,d=1,确认后关闭对话框(5)单击工具栏的 按钮,对正方形区域进行初始网格剖分,然后再对网格进一步细化剖分一次(6)点开solve菜单,单击Parameters选项,在弹出的对话框中设置特征值区域为[-20,20](7)单击Plot菜单的Parameters项,在弹出的对话框中选中Color、Height(3-D plot)和show mesh项,然后单击Done确认(8)单击工具栏的“=”按钮,开始求解。
第4讲 M脚本文件和M函数
keyboard的功能
一般使用在m-files里面,作用就是,当你运行mfiles的程序时,它会在keyboard的位置停下,并 且在命令窗口出现 K>> ,这时你可以在命令窗 口中输入命令,可以测试软件已经运行的程序 (keyboard以上的程序),或者可以改变已运行 程序所得到的变量,你可以在workspace里面观 察变量的变化。当你调试好了以后,在K>>后面 输入return,就会继续运行keyboard后面的程序。 其实keyboard就是调试程序时候用的,比较常用 的还有pause,但pause不可以改变已运行程序 得出变量 。
函数调用示意图
C:\ test soft APP 文件 文件 JAVA
Afun.m Bfun.m Cfun.m test1.m test2.m
当前路径 添加搜索路径
matlab
D:\
private
课件 00P 图片
例子 Dfun.m Efun.m Ffun.m eg1.m eg2.m
myfun1.m myfun2.m myfun3.m myfun4.m
M函数
使用M函数格式编程时MATLABC程序设计的主流。 MATLAB的M函数是由function语句引导的,其基 本格式如下: function [返回变量列表]=函数名(输入变量列表)
%H1行即引导行,用%注释,执行lookfor命令时会搜索这句话 %输入、返回格式变量的检测(也就是此函数的调用格式) %执行help+函数名时会显示这些内容
浮点型数据
最大浮点数realmax和最小浮点数realmin
例:
>> realmax >> realmin
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
4.1 二维图形
一、 plot函数 函数
(四)加图例
给图形加图例命令为legend。该命令把图例放置在图形空白 处,用户还可以通过鼠标移动图例,将其放到希望的位置。
格式:legend('图例说明 图例说明','图例说明 图例说明'); 图例说明 图例说明
【例5】 为正弦、余弦曲线增加图例,其程序为: 为正弦、余弦曲线增加图例,其程序为: x=0:pi/100:2*pi; y1=sin(x); y2=cos(x); plot(x,y1,x,y2, '--'); legend('sin(x)','cos(x)');
fplot(‘fct’,[0 1],1e-4)
4.2 特殊坐标图形
一、 对数坐标图形 (一)loglog(x,y) 双对数坐标 【例7】 绘制 |1000sin(4x)|+1的双对数 绘制y=|1000sin( x)|+1 sin(4 例 坐标图。程序为: 坐标图。程序为: x=[0:0.1:2*pi]; ; y=abs(1000*sin(4*x))+1; ;
4.1 二维图形
二、subplot函数 函数 【例6】 在一个图形窗口中同时绘制正弦、余弦、正切、余切 】 在一个图形窗口中同时绘制正弦、余弦、正切、 曲线,程序为: 曲线,程序为:
x=linspace(0,2*pi,60); y=sin(x); z=cos(x); t=sin(x)./(cos(x)+eps); eps为系统内部常数 为系统内部常数 ct=cos(x)./(sin(x)+eps); subplot(2,2,1); 分成 ×2区域且指定 号为活动区 分成2× 区域且指定 区域且指定1号为活动区 plot(x,y); title('sin(x)'); axis ([0 2*pi -1 1]); subplot(2,2,2); plot(x,z); title('cos(x)'); axis ([0 2*pi -1 1]); subplot(2,2,3); plot(x,t); title('tangent(x)'); axis ([0 2*pi -40 40]); subplot(2,2,4); plot(x,ct); title('cotangent(x)'); axis ([0 2*pi -40 40]);
4.1 二维图形
二、subplot函数 函数
阅读如下程序: 阅读如下程序:
x=linspace(0,2*pi,60); y=sin(x); z=cos(x); plot(x,y,'b');
绘制正弦曲线 设置图形保持状态 保持正弦曲线同时绘制余弦曲线
hold on;
plot(x,z,'g'); axis ([0 2*pi -1 1]); legend('cos','sin');
loglog(x,y); 双对数坐标绘图命令
4.2特殊坐标图形
(二)单对数坐标
轴为对数重新绘制上述曲线, 以X轴为对数重新绘制上述曲线,程序为: 轴为对数重新绘制上述曲线 程序为:
x=[0:0.01:2*pi] y=abs(1000*sin(4*x))+1 semilogx(x,y); 单对数 轴绘图命令 单对数X轴绘图命令
4.1 二维图形
函数f(x)曲线 三、 函数 曲线
为绘制f(x)=cos(tan(πx))曲线 , 可先建立 π 曲线 曲线, 为绘制 函数文件fct.m,其内容为: 函数文件 ,其内容为:
function y=fct(x) y=cos(tan(pi*x)); 函数调用fct.m函数,其命令为: 函数, 用fplot函数调用 函数调用 函数 其命令为:
第四讲 绘图功能
作为一个功能强大的工具软件, Matlab具有很强的图形处理功能, 提 具有很强的图形处理功能, 具有很强的图形处理功能 供了大量的二维、 三维图形函数。 供了大量的二维 、 三维图形函数 。 由 于系统采用面向对象的技术和丰富的 矩阵运算, 矩阵运算 , 所以在图形处理方面即常 方便又高效。 方便又高效。
一、 plot函数 函数
(一)线型与颜色 格式: 格式:plot(x,y1,’cs’,...)
其中c表示颜色, 表示线型 表示线型。 其中 表示颜色, s表示线型 表示颜色 图形, 【例3】 用不同线型和颜色重新绘制例 图形,其程序为: 】 用不同线型和颜色重新绘制例4.2图形 其程序为: x=0:pi/100:2*pi; y1=sin(x); y2=cos(x); plot(x,y1,'go',x,y2,'b-.') 其中参数'go'和'b-.'表示图形的颜色和线型。 g表示绿 和 表示图形的颜色和线型。 表示绿 其中参数 表示图形的颜色和线型 表示图形线型为圆圈; 表示蓝色 表示蓝色, 表示图形线型 色,o表示图形线型为圆圈;b表示蓝色,-.表示图形线型 表示图形线型为圆圈 为点划线。 为点划线。
4.1 二维图形
一、 plot函数 函数
(二)图形标记
在绘制图形的同时,可以对图形加上一些说明, 在绘制图形的同时,可以对图形加上一些说明, 如图形名称、图形某一部分的含义、坐标说明等, 如图形名称、图形某一部分的含义、坐标说明等, 将这些操作称为添加图形标记。 将这些操作称为添加图形标记。
title(‘加图形标题 加图形标题'); 加图形标题 xlabel('加X轴标记 轴标记'); 加 轴标记 ylabel('加Y轴标记 轴标记'); 加 轴标记 text(X,Y,'添加文本 添加文本'); 添加文本
4.1 二维图形
二、subplot函数 函数
(二)多图形窗口
需要建立多个图形窗口, 需要建立多个图形窗口,绘制并保持每一个窗口的图 命令。 形,可以使用figure命令。 每执行一次figure命令,就创建一个新的图形窗口, 命令,就创建一个新的图形窗口, 每执行一次 命令 该窗口自动为活动窗口, 该窗口自动为活动窗口,若需要还可以返回该窗口的识 别号码,称该号码为句柄。 别号码,称该号码为句柄。句柄显示在图形窗口的标题 栏中,即图形窗口标题。 栏中,即图形窗口标题。用户可通过句柄激活或关闭某 图形窗口, 图形窗口,而axis、xlabel、title等许多命令也只 、 、 等许多命令也只 对活动窗口有效。 对活动窗口有效。
hold off
关闭图形保持
4.1 二维图形
函数f(x)曲线 三、 函数 曲线 fplot函数则可自适应地对函数进行采样, 函数则可自适应地对函数进行采样, 函数则可自适应地对函数进行采样 能更好地反应函数的变化规律。 能更好地反应函数的变化规律。 fplot函数格式:fplot(fname,lims,tol) 函数格式: , , 函数格式
plot函数还可以为 函数还可以为plot(x,y1,x,y2,x,y3,…)形式,其功能 形式, 函数还可以为 , , 形式 是以公共向量x为 轴 分别以y1, , , 为 轴 是以公共向量 为X轴,分别以 ,y2,y3,…为Y轴, 在同一幅图内绘制出多条曲线。 在同一幅图内绘制出多条曲线。
4.1 二维图形
H1=figure;
创建新窗口并返回句柄到变量H1 创建新窗口并返回句柄到变量
plot(x,y); 绘制图形并设置有关属性 title('sin(x)'); axis ([0 2*pi -1 1]);
H2=figure;
创建第二个窗口并返回句柄到变量H2 创建第二个窗口并返回句柄到变量
plot(x,z); 绘制图形并设置有关属性 title('cos(x)');
4.1 二维图形
一、 plot函数 函数
【例 4】 在坐标范围 ≤X≤2π,-2≤Y≤2 内 例 在坐标范围0≤X≤ π,- ≤Y≤2 ≤X≤2 重新绘制正弦曲线,其程序为: 重新绘制正弦曲线,其程序为:
xБайду номын сангаасlinspace(0,2*pi,60);生成含有 个数据元素的向量 生成含有60个数据元素的向量 个数据元素的向量X y=sin(x); plot(x,y); axis ([0 2*pi -2 2]);设定坐标轴范围
4.1 二维图形
二、subplot函数 函数
重新绘制上例4个图形,程序变动后如下: 重新绘制上例 个图形,程序变动后如下: 个图形
x=linspace(0,2*pi,60); y=sin(x); z=cos(x); t=sin(x)./(cos(x)+eps); ct=cos(x)./(sin(x)+eps); axis ([0 2*pi -1 1]); H3=figure; 同上 plot(x,t); title('tangent(x)'); axis ([0 2*pi -40 40]); H4=figure; 同上 plot(x,ct); title('cotangent(x)'); axis ([0 2*pi -40 40]);
4.1 二维图形
一、 plot函数 函数
(三)设定坐标轴