matlab第6章MATLAB图形绘制
MATLAB基础教程(第四版) 第6章 MATLAB 编程
命令
说明
disp(A)
显p(‘text’) Format
显示单引号内部的文本串 控制屏幕输出的显示格式
Fprintf x = input('text')
执行格式化的写入到屏幕或者写入到一个文件 显示单引号中的文本,等待用户的键盘输入,并且将输入值存储在x中
x = input('text','s') k=menu('title','option1','option2',...
有变量,就需要考虑使用函数文件。这将避免用变量名“弄乱”工作空间,并将 同时减少内存需求。
(6) 在不使用文本编辑器打开M-文件的情况下,用户可以使用type命令来查看文件的 内容。
2019年9月27日
第7页
MATLAB R2018b 基础教程
脚本文件和编辑器(4/11)
有效使用命令窗口和编辑器/调试器窗口
脚本文件和编辑器(8/11)
使用脚本文件存储数据 可能会有一些应用程序要求用户频繁地访问同一组数据。
如果是这样的话,用户可以将数组中的数据存储在一个脚 本文件之中。
2019年9月27日
第12页
MATLAB R2018b 基础教程
脚本文件和编辑器(9/11)
控制输入和输出
MATLAB为从用户获取输入以及为格式化输出(执行MATLAB命令而获得的结果)提供了许多有用的命令。
2019年9月27日
第5页
MATLAB R2018b 基础教程
脚本文件和编辑器(2/11)
创建和使用脚本文件
2019年9月27日
第6页
MATLAB R2018b 基础教程
数字图像处理及应用(MATLAB)第6章习题答案
第六章习题与思考题参考答案1. 简述飞机红外图像识别中用到的五个红外特征量各自的作用?1)长宽比:反应了目标的几何形状;2)复杂度:反应了红外目标轮廓的情况;3)紧凑度:反应了红外目标在其所在最小外接矩形中所占比重;4)均值对比度:反映了目标的物理特性与背景的物理特性之间的关系;5)部分最亮像素点数与目标总像素数的比值:反应了目标的明暗变化情况;2. 可视密码共享中,如果实现(4 , 5)门限的可视密码分享,程序将做如何编写?clear allclose allM=imread('0.jpg');ss=rgb2gray(M);figureimshow(ss);[m n]=size(ss);for i=1:m*nif ss(i)>250ss(i)=250;endends=double(ss)+1;x=[1 2 3 4 5];g1=zeros(m,n);g2=zeros(m,n);g3=zeros(m,n);g4=zeros(m,n);g5=zeros(m,n);yy1=zeros(m,n);yy2=zeros(m,n);yy3=zeros(m,n);yy4=zeros(m,n);yy5=zeros(m,n);y1=zeros(m,n);y2=zeros(m,n);y3=zeros(m,n);y4=zeros(m,n);y5=zeros(m,n);for j=1:m*na1=mod(2*j,251);a2=mod(3*j,251);a3=mod(5*j,251);f=[a1 a2 a3 s(j)];g1(j)=polyval(f,x(1));yy1(j)=mod(g1(j),251);g2(j)=polyval(f,x(2));yy2(j)=mod(g2(j),251);g3(j)=polyval(f,x(3));yy3(j)=mod(g3(j),251);g4(j)=polyval(f,x(4));yy4(j)=mod(g4(j),251);g5(j)=polyval(f,x(5));yy5(j)=mod(g5(j),251);endy1=uint8(yy1-1)y2=uint8(yy2-1);y3=uint8(yy3-1);y4=uint8(yy3-1);y5=uint8(yy3-1);figure,imshow(y1);figure,imshow(y2)figure,imshow(y3);figure,imshow(y4);figure,imshow(y5);l1=(x(2)*x(3)*x(4)*x(5))/[(x(1)-x(2))*(x(1)-x(3))*(x(1)-x(4))*(x(1)-x(5))];l2=(x(1)*x(3)*x(4)*x(5))/[(x(2)-x(1))*(x(2)-x(3))*(x(2)-x(4))*(x(2)-x(5))];l3=(x(1)*x(2)*x(4)*x(5))/[(x(3)-x(1))*(x(3)-x(2))*(x(3)-x(4))*(x(3)-x(5))];l4=(x(1)*x(2)*x(3)*x(5))/[(x(4)-x(1))*(x(4)-x(2))*(x(4)-x(3))*(x(4)-x(5))];l5=(x(1)*x(2)*x(3)*x(4))/[(x(5)-x(1))*(x(5)-x(2))*(x(5)-x(3))*(x(5)-x(4))];rr1=zeros(m,n);r=zeros(m,n);for j=1:m*nrr1(j)=mod(yy1(j)*l1+yy2(j)*l2+yy3(j)*l3+yy4(j)*l4+yy5(j)*l5,251);endr=uint8(rr1-1);figure,imshow(r);3. 已知图像⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡=805020016821024015010017018013070901262068M 。
第06章_MATLAB数值计算_参考解答
%可参见教材第 157 页例 6.19
运行结果: dx =
000
%当 x=pi/2 时单独计算 x=pi/2; f=inline('sin(x).^2+cos(x).^2'); dx=diff(f([x, pi]))/(pi/2)
dx = 0
(2) 程序设计: clear all; close all; clc; x=1:3; f=inline('sqrt(x.^2+1)'); dx=diff(f([x, 4]))
运行结果:
U= 1.0e-004 * -0.0675
0.1715
fmin = 1.9920e-010
(2) 程序设计: clear all; close all; clc; f=inline('-sin(x)-cos(x.^2)'); fmax=fminbnd(f, 0, pi)
%用内联函数,求负的最小值 %注意函数名 f 不加单引号'
高教社刘卫国《MATLAB 程序设计与应用》(第二版)习题参考解答
第 6 章:MATLAB 数值计算
教材 P189 习题六
第 6 章 MATLAB 数值计算
1. 利用 MATLAB 提供的 randn 函数生成符合正态分布的 10×5 随机矩阵 A,进行如下操 作:
(1) A 各列元素的均值和标准方差。 (2) A 的最大元素和最小元素。 (3) 求 A 每行元素的和以及全部元素之和。 (4) 分别对 A 的每列元素按升序、每行元素按降序排列。 答:
运行结果: P=
0
15.0000
7.0000 -3.5000
0.5000 -2.0000 -2.0000
自动控制原理习题全解及MATLAB实验 第6章习题解答
系统开环传递函数为 G0 s
s0.1s
K
10.2s
1
,要求:
(1)系统响应斜坡信号 r(t)=t 时,稳态误差 ess 0.01 ;
(2) 系统相位裕量 ' 40 。
试用分析法设计一个串联滞后-超前校正装置。
解:(1)系统为Ⅰ型系统,在单位斜坡信号下
分稳态误差为
essr
1 k
令 essr
稳态性能与动态性能? 答:PID 兼有 PI、PD 控制的特点,它相当于提供了一个积分环节与两个一阶微分环节。
积分环节改善稳态性能,两个一阶微分环节改善动态性能。 试分别叙述利用比例负反馈和微分负反馈包围振荡环节所起到的作用。
答:二阶振荡环节的频率特性为
1
T 2S 2 2 S 1
用比例负反馈 H(s)=h
0.2s 1 0.0143s 1
(5) Gc (s)
s 1 14s 1
0.2s 1 0.0143s
(6)
G
k
(s)
s(14s
100(s 1) 1)(0.1s 1)(0.0143s
1)
' 180 [90 arctan 7 arctan(14 7) arctan(0.1 7) arctan(0.0143 7)] 41.9 40
10lg( 12)
6dB
,
最后得出 c' m 4.47rad/s>4.4rad/s
(4) 确定校正装置的转折频率
1 m
2.2rad/s ,2 m
8.8rad/s ,T 1 0.45s , 1
G(s)=
s
2.2 s
1 1
0.45s 0.11s
1 1
第六章MATLAB数据分析与功能函数
第六章MATLAB数据分析与功能函数在MATLAB中,有很多强大的数据分析和功能函数,可以帮助我们对数据进行处理、分析和可视化。
本章将介绍一些常用的数据分析和功能函数,并使用实例来介绍它们的用法。
1.统计函数MATLAB提供了丰富的统计函数,可以进行各种统计计算,例如平均值、标准差、中位数等。
- mean函数用于计算数组的平均值,例如:mean([1, 2, 3])的结果是2- std函数用于计算数组的标准差,例如:std([1, 2, 3])的结果是0.8165- median函数用于计算数组的中位数,例如:median([1, 2, 3])的结果是22.数据拟合函数MATLAB提供了拟合函数,可以用来对数据进行曲线拟合,从而得到数据的数学模型。
- polyfit函数用于进行多项式拟合,例如:x = [1, 2, 3, 4, 5]; y = [1, 4, 9, 16, 25]; p = polyfit(x, y, 2);表示对数据点进行二次多项式拟合,并返回拟合的系数。
3.数据聚类函数MATLAB提供了强大的数据聚类函数,可以将数据集分成多个不同的类别。
- kmeans函数用于进行k-means聚类,例如:x = [1, 1.5, 3, 3.5, 4, 6]; idx = kmeans(x, 2);表示对数据进行2类聚类,并返回每个数据点所属的类别。
- gmdistribution函数用于进行高斯混合模型聚类,例如:x = [1, 1.5, 3, 3.5, 4, 6]; gm = gmdistribution.fit(x', 2);表示对数据进行高斯混合模型聚类,并返回聚类结果。
4.数据可视化函数MATLAB提供了各种数据可视化函数,可以将数据以图表的形式展示出来,便于数据分析和理解。
- plot函数用于绘制折线图,例如:x = [1, 2, 3, 4, 5]; y = [1, 4, 9, 16, 25]; plot(x, y);表示将x和y的数据点用折线连接起来。
第六章 (2)MATLAB高级图形设计
。此时,Value数据就已经存储在句柄值为 ui_handle的对象内。
② 在执行的过程中若要取回该变量,可以通过以下 方式在任一Callback中获取该数据值:
Value=get(‘ui_handle’,’UserData’);
用的有hObject、 eventdata和 handles。
hObject:当前回调函数的图形对象句柄;
eventdata:预留的输入参数;
handles:存放图形窗口中所有图形对象句柄的结 构体,存储了所有在图形界面中的控件、菜单、 坐标轴对象的句柄,可以用于在function之间传 递数据。例如:handles.pushbutton1就是按钮 pushbuton1的句柄,handles.axes1就是axes1 的句柄。
global A;
25
多个回调函数之间变量的传递
方法二:直接通过对象的UserData属性来进行各个
C注al意lb:ack此之方间法的在数操据作存上取简操单作且。方便,但每个对
①象次于首设为仅变复先该V能量杂a必对存时的lu须象取,操e,一先作先的则个前会将句输变的造数柄入量 变 成据值以值 量 很存为下, 值 多储ui程因 就 不_到h序此 会 便一an即被当 。个d可覆同l特e盖一:,定掉对需的,象要对这存存象样储储中对两的,值假
➢string属性是按钮上显示的文字,默认的string属 性与Tag相同。
3.滚动条(Slider) (1)常用属性 滚动条的常用回调函数是callback,当每次单击滚动条
改变当前值时调用该函数。 (2)回调函数 常用属性有value、max、min和SliderStep。
第6章 MATLAB高级图形设计
%h_obj是图形对象的句柄; %funname是函数名,每个创建的图形对象函数名与对象
名相同; %'PropertyName'是属性名,属性名是字符串; %PropertyValue是属性值。
例: >> h_f=figure('Position',[200 300 500 400]) >> h_a1=axes('position',[0.1,0.05,.85,.85]) %创建条形图的坐标轴 练习
gcf %查找符合指定属性值的对象句柄
例
第6章 MATLAB高级图形设计
3. 句柄图形对象属性的获取和设置 a=set(h_obj,'PropertyName',PropertyValue,...)
%设置图形对象的属性值
a=get(h_obj,'PropertyName')
Uicontrol 控件对象
Uicontextmenu 上下文菜单
Uimenu 菜单
Uipanel 面板
Uitoolbar 工具栏
第6章 MATLAB高级图形设计
6.1.2 句柄图形对象的操作
1. 创建句柄图形对象 h_obj=
funname('PropertyName',PropertyValue,……)
%获取图形对象的属性值PropertyValue
第6章 MATLAB高级图形设计
例6-2 使用句柄图形对象绘制正弦曲线
>> x=0:0.1:10; >> y=sin(x); %创建无标题窗口 >> h_f=figure('Position',[200 300 300 300],'menubar','none'); >> h_a1=axes('position',[0.1,0.1,.8,.8]); >> h_t=title(h_a1,'正弦曲线'); %创建标题 >> h_l=line(x,y); %设置坐标轴刻度及刻度标注 >> set(gca,'xtick',[0 pi/2 pi 3*pi/2 2*pi 5*pi/2 3*pi]) >> set(gca,'xticklabel',{'0','pi/2','pi','3*pi/2','2pi','5*pi/2','3pi'}) >> set(gca,'xgrid','on','ygrid','on'); %设置坐标轴属性 >> set(h_l,'linewidth',2) %设置线属性 >> set(get(h_t,'parent'),'color','y') %设置标题的父对象属性 %创建矩形框 >> h_ann0=annotation(gcf,'rectangle',[0.1 0.5 .8 0.4],... 'FaceAlpha',.7,'FaceColor','red');
MATLAB图形绘制
18
【例6-4】 在图形中添加文本字符串。 x=0:0.1:10; y=sin(x); plot(x,y) xlabel('x') ylabel('y=sinx') text(0,sin(0),‘\leftarrowsin(x)=0’) % 在指定位置添
加左箭头及字符串
text(3*pi/4,sin(3*pi/4),'\rightarrowsin(x)=0.707') text(7*pi/4,sin(7*pi/4),'\leftarrowsin(x)=-0.707')
x=x+(x==0)*eps; % 用一个“机器0”小数代替0
y=sin(x)./x; % 用可逻辑运算的sin(esp)/esp近似代替sin(0)/0的极限
plot(x,y)
xlabel('x')
% 在x轴上标注x
ylabel('y=sinx/x')
% 在y轴上标注y=sinx/x
title('门函数的频谱') % 在图形上方添加标题
9
④plotyy指令的常用调用格式 plotyy(x1,y1,x2,y2) plotyy(x1,y1,x2,y2,'f') plotyy(x1,y1,x2,y2,'f1','f2')
指令中出现的参数f、f1、f2等代表绘制数据的 方式,可选择plot、semilogx、semilogy、 loglog等不同的形式。
28
⑤二维区域图的绘制 区域图的绘制使用area指令,该指令用于
在图形窗口中显示一段曲线,该曲线可由一 个矢量生成,也可由矩阵中的列生成(其实 在MATLAB中,矢量是矩阵的一种特殊形式 ,即列数为1的矩阵就是矢量)。如果矩阵的 列数大于1,则area指令将矩阵中每一列的 值都绘制为独立的曲线,并且对曲线之间和 曲线与x轴之间的区域进行填充。这种图形 在MATLAB中就称为区域图。
matlab7从入门到精通-[中国IT联盟www.ciun.in]第6章 matlab - 讲义
6.3.2 仿真结果分析 为了观察仿真结果的变化轨迹可以采用3种方法。 (1)把输出结果送给Scope模块或者XY Graph模块。 Scope模块显示系统输出量对于仿真时间的变化曲线,XY Graph模块显示送到该模块上的两个信号中的一个对另一 个的变化关系。 (2)把仿真结果送到输出端口并作为返回变量,然后使用 MATLAB命令画出该变量的变化曲线。 (3)把输出结果送到To Workspace模块,从而将结果直接 存入工作空间,然后用MATLAB命令画出该变量的变化曲 线。
(3)保存选项(Save options) 在保存选项栏中的“Format”下拉列表中有矩阵、结构和包 含时间的结构3种选择。“Limit data points to last”用来限 定保存到工作空间中的数据的最大长度。 输出选项(Output options)有: ① Refine output(细化输出) output ② Produce additional output(产生附加输出) ③ Produce specified output only(仅在指定的时刻产生输 出)
6.3.3 系统仿真实例 【例6.3】有初始状态为0的二阶微分方程 y" + 1.5y' + 10y = 2u'(t) + 10u(t),其中u(t)是单位阶跃函数,试建立 系统模型并仿真。 方法1:用微分/积分器直接构造求解微分方程的模型。 把原微分方程改写为 y" = 2u' (t) + 10u(t) − 1.5y' − 10y u经微分作用得u',y"经积分作用得y',y'再经积分模块作用就得y,而u'、 u、y'和y经代数运算又产生y",据此可以建立系统模型并仿真。 (1)利用Simulink模块库中的基本模块建立系统模型 (2)设置系统仿真参数。 在模型编辑窗口的 Simulation stop time栏把仿 真的停止时间设置为5。 (3)仿真操作。
Matlab教程课件-第6章_分支限界法
8
例 1 :0-1背包问题(0-1Knapsack Problem )
问题陈述 设有n个物体和一个背包,物体i的重量为wi价值为pi ,背包 的载荷为M, 若将物体i(1 i n,)装入背包,则有价值为pi . 目标是找到一个方案, 使得能放入背包的物体总价值最高.
原则选取下一个结点为扩展结点。
(2)优先队列式分支限界法 将活结点表组织成一个优先队列,按照规定的优先
级选取优先级最高的结点成为当前扩展结点。
• 算法实现时,通常用极大(小)堆来实现 最大(小)优先队列,提取堆中下一个结 点为当前扩展结点,体现最大(小)费用 优先的原则。
• 极大堆满足一个节点必定不小于其子节点, 极小堆正好相反。
设N=3, W=(16,15,15), P=(45,25,25), C=30
1.队列式分支限界法 2.优先队列式分支限界法
9
0-1背包问题:队列式分支限界法
用一个队列存储活结点表,初始为空 A为当前扩展结点,其儿子结点B和C均为可行结点,将其
按从左到右顺序加入活结点队列,并舍弃A。 按FIFO原则,下一扩展结点为B,其儿子结点D不可行,
分支限界法以广度优先或以最小耗费(最大效益)优 先的方式搜索问题的解空间树。
每一个活结点只有一次机会成为扩展结点。
活结点一旦成为扩展结点,就一次性产生其所有儿子 结点。
儿子结点中,导致不可行解或导致非最优解的儿子结 点被舍弃,其余儿子结点被加入活结点表中。
从活结点表中取下一结点成为当前扩展结点,并重复 上述结点扩展过程。这个过程一直持续到找到所需的解 或活结点表为空时为止。
第六章 MATLAB 绘图
第六章
MATLAB 绘图
1
MATLAB 绘图
matlab语言丰富的图形表现方法,使得数学计算结果可以
方便地、多样性地实现了可视化,这是其它语言所不能比 拟的。
–高层绘图函数
» 不需过多考虑绘图细节,只需给出一些基本参数 » 简单明了、方便高效 –低层绘图操作 » 将图形的每个元素(坐标轴、曲线、曲面或文字) 分配一个句柄,通过该句柄对该图形元素进行操作 » 控制和表现图形的能力更强
–当选项省略时,MATLAB规定,线型一律用实线,颜色将根据曲线的先后 顺序依次采用表中给出的前7种颜色。 –t=0:0.2:2*pi; –x=sin(t); –y=cos(t); –plot(t,x,'+r',t,y,'-b')
11
二维图形(续)
双纵坐标函数plotyy
– 将函数值具有不同量纲、不同数量级的两个函数绘制在同一坐标中,有 利于图形数据的对比分析。 – 调用格式为:plotyy(x1,y1,x2,y2)
数字图像处理与应用(MATLAB版)第6章 图像的分割
是边缘;
➢ 使用双阈值算法检测和连接边缘。即使用直方图计
算两个阈值,凡是大于高阈值的一定是边缘;凡是
小于低阈值的一定不是边缘。如果检测结果大于低
阈值但又小于高阈值,那就要看这个像素的邻接像
素中有没有超过高阈值的边缘像素,如果有,则该
像素就是边缘,否则就不是边缘。
0 -1 0 -1 4 -1 0 -1 0
B A
6.1 图像分割的定义和分类
图像分割:是指根据灰度、彩色、纹理等特征把图像 划分成若干个互不相交的区域,使得这些特征在同一区 域内,表现出一致性或相似性,而在不同区域间表现出 明显的不同。
图像分割的作用
图像分割是图像识别和图像理解的前提,图像分 割质量的好坏直接影响后续图像处理的效果。
图像
具体步骤:
➢ 首先用2D高斯滤波模板进行卷积以平滑图像;
➢ 利 用 微 分 算 子 ( 如 Roberts 算 子 、 Prewitt 算 子 和
Sobel算子等),计算梯度的幅值和方向;
➢ 对梯度幅值进行非极大值抑制。即遍历图像,若某
个像素的灰度值与其梯度方向上前后两个像素的灰
,
度值相比不是最大,那么这个像素值置为0,即不
第六章 图像的分割
内 容 1、图像分割的定义和分类; 提 2、基于边缘的图像分割方法;
要 3、基于区域的分割;
4、基于运动的图像分割 ; 5、图像分割技术的发展。
基
本 要
通过对图像分割技术的学习,掌
求 握基于边缘、区域、运动的图像
重
分割技术。
点
难 点
图像分割的定义、分类 基于边缘的图像分割方法
基于区域、运动的图像分割方法
G(i, j) Px Py
MATLAB课件 第6讲
π
y′′ − µ 1 − y 2 y′ + y = 0 y (0) = 1, y′(0 ) = 0, µ = 2
函数ode23和ode45是对一阶常微分方程组设计的,因此,对高阶常微 和 是对一阶常微分方程组设计的, 函数 是对一阶常微分方程组设计的 因此, 分方程,需先将它转化为一阶常微分方程组,即状态方程。 分方程,需先将它转化为一阶常微分方程组,即状态方程。 则可写出Van der Pol 方程的状态方程形式: 方程的状态方程形式: 令 x1 = y , x2 = y ′, 则可写出
求解器 Ode23 Ode45 Ode113 Ode23t Ode15s Ode23s Ode23tb ode15i 采用方法 2-3阶Runge-Kutta算法,低精度 算法, 阶 算法 4-5阶Runge-Kutta算法,中精度 阶 算法, 算法 Adams算法,精度可到 10 −3 ~ 10 −6 算法, 算法 梯形算法 Gear’s方向数值微分算法,中精度 方向数值微分算法, 方向数值微分算法 2阶Rosebrock算法,低精度 阶 算法, 算法 梯形算法,低精度 梯形算法, 可变秩方法 适用场合 非刚性 非刚性 非刚性, 非刚性, 适度刚性 刚性 刚性 刚性 完全隐式微分方程
∫
1
0
ln xdx .
(1)建立被积函数文件 )建立被积函数文件feln.m. function y=feln(x) y=exp(x).*log(x); (2)调用数值积分函数 求定积分。 )调用数值积分函数quadgk求定积分。 求定积分 format long; I=quadgk(@ feln,0,1) 3.梯形积分法 梯形积分法 在MATLAB中,对由表格形式定义的函数关系的求定积分问题用梯 中 形积分函数trapz.该函数调用格式如下。 该函数调用格式如下。 形积分函数 该函数调用格式如下 ●T=trapz(Y).例如:trapz([1:5;2:6]’) 例如: 例如 ●T=trapz(X,Y).
《MATLAB程序设计教程(第二版)》第6章__MATLAB解方程与最优化问题求解
6.1.2 迭代解法 迭代解法非常适合求解大型系数矩阵的方程组。在数 值分析中,迭代解法主要包括 Jacobi迭代法、 Gauss-Serdel迭代法、超松弛迭代法和两步迭代法。
1.Jacobi迭代法 对于线性方程组Ax=b,如果A为非奇异方阵,即 aii≠0(i=1,2,…,n),则可将A分解为A=D-L-U,其中 D为对角阵,其元素为A的对角元素,L与U为A的 下三角阵和上三角阵,于是Ax=b化为: x=D-1(L+U)x+D-1b 与之对应的迭代公式为: x(k+1)=D-1(L+U)x(k)+D-1b 这就是Jacobi迭代公式。如果序列{x(k+1)}收敛于x, 则x必是方程Ax=b的解。
(3) Cholesky分解 如果矩阵X是对称正定的,则Cholesky分解将矩阵X分 解成一个下三角矩阵和上三角矩阵的乘积。设上三 角矩阵为R,则下三角矩阵为其转置,即X=R'R。
MATLAB函数chol(X)用于对矩阵X进行Cholesky分解, 其调用格式为: R=chol(X):产生一个上三角阵R,使R'R=X。若X为非 对称正定,则输出一个出错信息。 [R,p]=chol(X):这个命令格式将不输出出错信息。当X 为对称正定的,则p=0,R与上述格式得到的结果相 同;否则p为一个正整数。如果X为满秩矩阵,则R 为一个阶数为q=p-1的上三角阵,且满足 R'R=X(1:q,1:q)。 实现Cholesky分解后,线性方程组Ax=b变成R‘Rx=b, 所以x=R\(R’\b)。
Gauss-Serdel迭代法的MATLAB函数文件gauseidel.m 如下:
function [y,n]=gauseidel(A,b,x0,eps) if nargin==3 eps=1.0e-6; elseif nargin<3 error return end D=diag(diag(A)); %求A的对角矩阵 L=-tril(A,-1); %求A的下三角阵 U=-triu(A,1); %求A的上三角阵 G=(D-L)\U; f=(D-L)\b; y=G*x0+f; n=1; %迭代次数 while norm(y-x0)>=eps x0=y; y=G*x0+f; n=n+1; end
matlab基础教程教学课件杨德平第6章程序设计
end 说明 每当循环变量variable取expression中的一个值时,就执行循环体 statements一次,直到取完expression中的值。expression常用数组形成 表示。
【例6-4】编写求100!的程序,利用公式k!=(k-1)!×k。 s=1; for k=1:100 s=s*k; end s 运行结果如下: s= 9.3326e+157
表6-3 各种运算符优先级排序
优先级 最高
最低
运算符 ()小括号 ’转置 .^ 数组乘方 ^ 矩阵乘方 逻辑非(not,~) .* 点乘 ./点除 乘法 除法 加减法 冒号 关系操作符(==,~=,>,>=,<,<=) 逻辑与(and,&) 逻辑或、逻辑异或6(/1or,xor,|)
首页
6.2. 顺序语句
and(a,b)
| 或(or)
or(a,b)
6/1
~ 非(not)
not(a,b)
异或(xor)
xor(a,b) 首页
尚 辅 网 shangfuwang
逻辑操作运算法则如下: (1)a&b或and(a,b):表示a和b作“逻辑与”运算,当a和b全为非零时,运算 结果为1,否则为0; (2)a|b或or(a,b):表示a和b作“逻辑或”运算,当a和b只要有一个非零,运 算结果为1,否则为0; (3)~a或not(a):表示对a作“逻辑非”运算,当a是零时,运算结果为1,否 则为0; (4)xor(a,b):表示a和b作“逻辑异或”运算,当a和b的值一个为零,一个不 为零时运算结果为1,否则为0。
例如,判断当a为偶数时,显示a是偶数,并计算a/2;否则不作任何处理。 If rem(a,2)==0 disp('a is even') b=a/2; end
MATLAB与计算机仿真课件第6章 MATLAB数值运算
f '( x) 3x2 4x 3
polyder(p)的运算结果为[3 4 3]
三、多项式的求解
2、多项式的求根 格式: roots(p) (由多项式求根) 例如:p=[1 3 2]; roots(p)的运算结果为[-2 ; -1 ] 格式: poly(r) (由根求多项式)
2
A=[1,2,3;2,3,4]; B=[1;2]; X=pinv(A)*B XX=A\B
四、相关与卷积
对两组数据(或两个信号),可求其相关、协方差和卷积等
1、求协方差:
cov(x)
求x 的协方差阵
cov(x,y)
求x ,y的协方差
2、求相关系数
corrcoef(x) 求x的自相关阵
corrcoef(x,y) 求x,y的互相关系数
2
3
x1
4 x3
5
A=[1,2;2,3;3,4]; B=[1;2;5]; X=pinv(A)*B XX=A\B
3、欠定方程组的解 (有无穷多个解 )
有两种求解方法: (1) X= pinv(A)*B (具有最小长度或范数的解) (2) X=A\B (具有最多零元素的解)
例题:
x1 2x2 3x3 1 2x1 3x2 4x3
1、恰定方程组的解 (有唯一的一组解)
AX B ➡ A1AX A1B ➡ X A1B A \ B
有两种求解方法:(1) X= inv(A)*B (速度较慢) (2) X=A\B (速度快,精度高)
例:
x1 2x2 8 2x1 3x2 13
A=[1,2;2,3]; B=[8;13]; X=inv(A)*B XX=A\B
( sa+sb)= (1,1)
第6章 MATLAB程序设计
如果用户调用toc时不指定输出参数t, 例如: >> tic >> toc elapsed_time = 4.0160 函数在命令窗口显示函数工作空间变量 elapsed_time 的值,但在MATLAB命令工作空间里不给输出参数t赋任 何值,也不创建变量t。
如果如果用户调用toc时指定输出参数t,例如: >> tic >> out=toc out = 2.8140 则以变量out的形式返回到命令窗口,并在 MATLAB命令工作空间里创建变量out。
function y = linspace(d1, d2, n) %LINSPACE Linearly spaced vector. if nargin == 2 n = 100; end n = double(n); y = [d1+(0:n-2)*(d2d1)/(floor(n)-1) d2];
function t=toc % TOC Read the stopwatch timer.
Global TICTOC If nargout<1 elapsed_time=etime(clock,TICTO C) else t=etime(clock,TICTOC); end
(8)全局变量可以为编程带来某些方便,但却破坏了函 数对变量的封装,所以在实际编程中,无论什么时候都应 尽量避免使用全局变量。如果一定要用全局变量,建议全 局变量名要长、采用大写字母,并有选择地以首次出现的 M文件的名字开头,使全局变量之间不必要的互作用减至 最小。 (9)MATLAB以搜寻脚本文件的同样方式搜寻函数文件。 例如,输入>>cow,MATLAB首先认为cow是一个变 量;如果它不是,那么MATLAB认为它是一个内置函数; 如果还不是,MATLAB检查当前cow.m的目录或文件夹; 如果仍然不是,MATLAB就检查cow.m在MATLAB搜 寻路径上的所有目录或文件夹。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
【例6-9】 垂直条形图的绘制。 x=[1 2 3]; %定义条形的位置 y=[3 5 2; 4 6 8; 7 5 3]; %定义条形的高度 bar(x,y) 【例6-10】 绘制一个二维水平且堆叠的条形图。 x=[1 2 3]; y=[3 5 2; 4 6 8; 7 5 3]; barh(x,y)
3
6.1 MATLAB图形绘制基础
1. MATLAB图形绘制的基本步骤
在MATLAB中,一般按照下述的几个步骤绘制 图形。 ①准备需绘制的数据或函数,常用典型指令如下。
x=0:0.1:10; y1=bessel(1,x); y2=bessel(2,x); y3=bessel(3,x);
4
②选择图形输出的窗口及位置,常用典型指令如下。 figure(1) subplot(m,n,k) ③调用基本的绘图函数,常用典型指令如下。 plot(x,y1,x,y2,x,y3) plot3(x,y,z,'r :') ④设置坐标轴的范围、标记号和网格线,常用典型指 令如下。 axis([0,10,-3,3]) axis([x1,x2,y1,y2,z1,z2]) grid on
13
MATLAB虽然会自动为每条曲线赋予不同的颜 色以示区别,但有时却很难判断曲线和函数的对 应关系,可以通过两种方法来解决这个问题。第 一种方法,把这些曲线在同一个绘图窗口的不同 区域分别显示,把例6-2程序修改如下。
x=0:0.01:10; y1=sin(x); y2=x.*sin(x); y3=exp(2*cos(x)); subplot(2,2,1),plot(x,y1) % 在第1个子图中显示y1 subplot(2,2,2),plot(x,y2) % 在第2个子图中显示y2 subplot(2,2,3),plot(x,y3) % 在第3个子图中显示y3
17
2. 二维图形的标注 表6-3对常用的一些标注指令进行了归纳,我 们通过一些例子来说明表6-3中各指令的功能。 【例6-3】 坐标轴及标题的标注。 x=-10:0.1:10; % 定义图形的横轴坐标范围及采样步长 x=x+(x==0)*eps; % 用一个“机器0”小数代替0 y=sin(x)./x; % 用可逻辑运算的sin(esp)/esp近似代替sin(0)/0的极限 plot(x,y) xlabel('x') % 在x轴上标注x ylabel('y=sinx/x') % 在y轴上标注y=sinx/x title('门函数的频谱') % 在图形上方添加标题
28
⑤二维区域图的绘制 区域图的绘制使用area指令,该指令用于 在图形窗口中显示一段曲线,该曲线可由一 个矢量生成,也可由矩阵中的列生成(其实 在MATLAB中,矢量是矩阵的一种特殊形式 ,即列数为1的矩阵就是矢量)。如果矩阵的 列数大于1,则area指令将矩阵中每一列的 值都绘制为独立的曲线,并且对曲线之间和 曲线与x轴之间的区域进行填充。这种图形 在MATLAB中就称为区域图。
29
【例6-11】 根据矩阵数据来绘制区域图。 A=[1 2 3 4 2468 3573 7532 6 3 2 1]; area(A) %绘制区域 set(gca,'xtick',1:5) %设定x轴的标示 grid on %显示网格 set(gca,'layer','top') %将网格显示在图形之上
14
运 行 后 结 果 如 图 6.6 所 示 。 程 序 中 subplot(2, 2, 3),plot(x, y3)的含义是把绘图窗 口划分成2行2列共4个区域(可同时显示4个子 图),把y3显示在第2行第1列,即第3个子图的 位置。此时,可以方便地区分y1、y2、y3并观 察它们的形状。
15
3. 典型二维图形的绘制
①对数、半对数坐标轴图形的绘制 在有些时侯,需要的函数可能在两个坐标轴或 某个坐标轴上有较大的取值范围,这时可以通过 loglog、semilogx、semilogy等指令在x轴和(或)y轴 按对数比例绘制二维图形。
22
【例6-6】 对数、半对数坐标轴图形的绘制。 x=0:0.1:10; y=exp(x); subplot(1,3,1) % 显示在第1个子图上 plot(x,y) subplot(1,3,2) loglog(x,y) % 在x轴和y轴都按对数比例绘制图形 subplot(1,3,3) semilogy(x,y) % 在x轴按线性比例、y轴按对数比例绘
7
2. MATLAB基本绘图命令
MATLAB提供了大量的指令用于将矢量数据
以曲线图形的方式进行显示以及这些曲线图形的
注释和打印。 详见表6-1。
①plot指令的常用调用格式
plot(y,'s') plot(x,y,'s') plot(x1,y1,'s1',x2,y2,'s2') h=plot(…)
11
有时为了便于观察,可以在图形上加上网格, 此时只需在上例程序后加上grid on即可。 x=0:0.01:10; y=sin(x); plot(x,y) grid on 运行后结果如图6.4所示。
12
【例6-2】在一个图形窗口中绘制多条函数曲线。 x=0:0.01:10; y1=sin(x); y2=x.*sin(x); %y2=xsinx 2cosx y3=exp(2*cos(x)); % y3 = e plot(x,y1,x,y2,x,y3) 运行后结果如图6.5所示。
25
③极坐标图的绘制 极坐标也是一种常用的坐标形式,在有些场合 使用起来非常方便。极坐标图的绘制使用的指令是 polar,其调用格式为polar(theta,rho,linespec), 即用极角theta和极径rho画出极坐标图形,参量 linespec则可以指定极坐标图中线条的线型、标记 符号和颜色等。 【例6-8】 极坐标图的绘制。 x=0:0.01:2*pi; polar(x,sin(2*x).*cos(2*x),'r:')
制二维图形
23
②双y轴图形的绘制 利用MATLAB的plotyy指令可以同时绘制两条 函数曲线,这两条曲线共用一个x轴,而y轴则为 两个,分别位于图形的左边和右边。这时,可以 将具有不同取值范围的两条函数曲线放到一个图 形中,以便进行分析和比较。
24
【例6-7】 双y轴图形的绘制。 x=0:1000; a=1000;b=0.01;c=0.01; y1=a*exp(-b*x); y2=cos(c*x); plotyy(x,y1,x,y2,'semilogy','plot')
title('八瓣玫瑰图')
26
④二维条形图的绘制
在MATLAB中,用指令bar和barh来绘制二维条形 图,其中指令bar用来绘制垂直条形图,barh用来绘 制水平条形图。指令的调用格式为 bar(x, y, width, ‘style’, linespec) 或barh(x, y, width, ‘style’, linespec), 其中的参数width代表条形的宽度,默认值为0.8, 当width的值大于1时,条形将会出现交叠;参数style 用来定义条形的类型,可选值为group或stack,其默 认值为group,如选stack,则对mn矩阵只绘制n组条 形,每组一个条形,且条形的高度为这一列中所有元 素的和;参数linespec用来定义条形的颜色。
18
【例6-4】 在图形中添加文本字符串。 x=0:0.1:10; y=sin(x); plot(x,y) xlabel('x') ylabel('y=sinx') text(0,sin(0),‘\leftarrowsin(x)=0’) % 在指定位置添
加左箭头及字符串
text(3*pi/4,sin(3*pi/4),'\rightarrowsin(x)=0.707') text(7*pi/4,sin(7*pi/4),'\leftarrowsin(x)=-0.707')
另外一种方法,可以通过自定义曲线的颜色、 线型等来区别不同的曲线。对例6-2程序的最后 一句修改如下 plot(x,y1,'r:',x,y2,'g--',x,y3,'b-.') 运行后结果如图6.7所示 在图6.7中,用红色的虚线(在程序中用r:表示) 表示函数y1,用绿色的双画线(在程序中用g--表 示)表示函数y2,用蓝色的点画线(在程序中用b-. 表示)表示y3。这样就能方便区分同一窗口中不 同的曲线。
19
如果在不要求精确定位的情况下对图形进行 标注,还可以使用gtext指令实现以交互的方式将 标注字符串放置在图形中。例如,在图6.8中的 正弦曲线上执行下面的指令 gtext('第一个零点') gtext('第二个零点') gtext('第三个零点') 按回车键后打开图形窗口,当光标进入图形 窗口时,会变成一个大十字,表明系统正在等待 用户的动作。单击想要加入标注的地方即可。
16
此外还可以在不同函数曲线上标注不同的数据 点型以观察数据点。比如对例6-2程序的第一句 及最后一句修改如下 x=0:0.2:10; plot(x,y1,'r:+',x,y2,'g--d',x,y3,'b-.o') 修改第一句的目的是增加数据取值步长,以便 于观察数据点。 运行后结果如图6.8所示 。 在图6.8中,y1上的数据点用加号表示,y2上 数据点用菱形表示,y3上的数据点用圆形表示。
20
【例6-5】 图形的图例标注。 x=linspace(0,2*pi,50); y1=cos(x); y2=sin(x); plot(x,y1,x,y2) xlabel('x的取值范围') ylabel('y1和y2的值') legend(' y1=cos(x)', ' y2=sin(x)')