matlab figure的figure中,如何实现点击鼠标一下,就显示此点对应的数值信心,此信息并不是坐标。

您现在的位置: >> linux实验报告 >> matlab实验报告小结
matlab实验报告小结
来源: 时间:
【matlab实验报告小结】徐律
电气工程学院自动化 102 班 2012 年 12 月 21 日实验一 MATLAB 环境的熟悉与基本运算一、实验目的1.熟悉MATLAB开发环境 2.掌握矩阵、变量、表达式的各种基本运算二、实验基本知识1.熟悉MATLAB环境 MATLAB桌面和命令窗口、命令历史窗口、帮助信息浏览器、工作空间浏览器、文件和搜索路 径浏览器。2.掌握MATLAB常用命令 clc clear help lookfor who 清除命令窗口中内容 清除工作空间中变量 对所选函数的功能、调用格式及相关函数给出说明 查找具有某种功能的函数但却不知道该函数的准确名称 查询工作空间中的变量信息3.MATLAB变量与运算符 变量命名如下(1) 变量名可以由英语字母、数字和下划线组成 (2) 变量名应以英文字母开头 (3) 长度不大于31个 (4) 区分大小写 MATLAB中设置了一些特殊的变量与常量,列于下表。1 表1 MATLAB的特殊变量与常量 变量名 ANS i或j pi eps realmax 功能说明 默认变量名,以应答 一次操作运算结果 虚数 圆周率 浮点数的相对误差 最大的正实数 变量名 realmin INF(inf) NAN(nan) nargin nargout 功能说明 最小的正实数 无穷大 不定值(0/0) 函数实际输入 参数个数 函数实际输出 参数个数MATLAB运算符,通过下面几个表来说明MATLAB的各种常用运算符 表 2 MATLAB 算术运算符 操作符 + * .* ^ .^ 功能说明 加 减 矩阵乘 数组乘 矩阵乘方 数组乘方 表 3 MATLAB 关系运算符 操作符 == ~= & & &= &= 表 4 MATLAB 逻辑运算符 逻辑运算符 & | ~ Xor 逻辑运算 And Or Not 说明 逻辑与 逻辑或 逻辑非 逻辑异或 功能说明 等于 不等于 大于 小于 大于等于 小于等于 操作符 \ .\ / ./ ' .' 功能说明 矩阵左除 数组左除 矩阵右除 数组右除 矩阵转置 数组转置2 表 5 MATLAB 特殊运算 符号 ; , () [] {} 构成向量、矩阵 构成单元数组 功能说明示例 1:1:4;1:2:11 分隔行 分隔列 符号 . .. ? % ! = 注释 调用操作 系统命令 用于赋值 功能说明 示例4.MATLAB的一维、二维数组的寻访 表6 子数组访问与赋值常用的相关指令格式 指令格式 指令功能 数组A中r指定行、c指定列之元素组成的子数组 数组A中r指定行对应的所有列之元素组成的子数组 数组A中c指定列对应的所有行之元素组成的子数组 数组A中各列元素首尾相连组成的“一维长列”子数组 &一维长列&子数组中的第i个元素 数组A中r指定行、c指定列之元素组成的子数组的赋值 数组全元素赋值,保持A的行宽、列长不变,A、D两组元素 总合应相同A(r,c) A(r,:) A(:,c) A(:) A(i) A(r,c)=Sa A(:)=D(:)5.MATLAB的基本运算 表 7 两种运算指令形式和实质内涵的异同表 数组运算 指令 A.' A=s s+B s-B,B-s s.*A s./B,B.\s A.^n A.^p 含义 非共轭转置 把标量s赋给A的每个元素 标量s分别与B元素之和 标量s分别与B元素之差 标量s分别与A元素之积 标量s分别被B的元素除 A的每个元素自乘n次 对A各元素分别求非整数幂 s*A S*inv(B) A^n A^p 标量 s 分别与 A 每个元 素之积 B阵的逆乘s A阵为方阵,自乘n次 方阵A的非整数乘方 矩阵运算 指令 A’ 含义 共轭转置3 A+B A-B A.*B A./B B.\A exp(A) log(A) sqrt(A)对应元素相加 对应元素相减 对应元素相乘 A的元素别B的对应元素除 与上相同 以自然数e为底,分别以A的元素为 指数,求幂 对A的各元素求对数 对A的各元素求平方根A+B A-B A*B A/B B\A expm(A) logm(A) sqrtm(A)矩阵相加 矩阵相减 内维相同矩阵相乘 A右除B A左除B A的矩阵指数函数 A的矩阵对数函数 A的矩阵平方根函数6.MATLAB的常用函数 表8 标准数组生成函数 指令 diag eye magic ones 含义 产生对角形数组(对高维不适用) 产生单位数组(对高维不适用) 产生魔方数组(对高维不适用) 产生全1数组 指令 rand randn zeros size() 含义 产生均匀分布随机数组 产生正态分布随机数组 产生全0数组 返回 指定矩阵 的行数和列 数表9 数组操作函数 指令 diag flipud fliplr reshape rot90 det rank 含义 提取对角线元素,或生成对角阵 以数组“水平中线”为对称轴,交换上下对称位置上的 数组元素 以数组“垂直中线”为对称轴,交换左右对称位置上的 数组元素 在总元素数不变的前提下,改变数组的“行数、列数” 矩阵逆时针旋转90度 方阵的行列式值 矩阵的秩三、实验内容1、新建一个文件夹(自己的名字命名) 2、启动MATLAB6.5,将该文件夹添加到MATLAB路径管理器中。3、保存,关闭对话框 4、学习使用help命令,例如在命令窗口输入help eye,然后根据帮助说明,学习使用指令 eye(其它不会用的指令,依照此方法类推) 5、学习使用clc、clear,观察command window、command history和workspace等窗口的变 化结果。6 、初步程序的编写练习,新建 M-file,保存(自己设定文件名,例如 exerc1 、 exerc2 、4 exerc3??),学习使用MATLAB的基本运算符、数组寻访指令、标准数组生成函数和数组操 作函数。注意:每一次M-file的修改后,都要存盘。练习A:(1) help rand,然后随机生成一个2×6的数组,观察command window、command history 和workspace等窗口的变化结果。(2) 学习使用clc、clear,了解其功能和作用。答:clc是清除命令窗体内容 clear是清除工作区间 (3) 输入C=1:2:20,则C(i)表示什么?其中i=1,2,3,?,10。由实验结果可以得知, C=1:2:20是产生从1到20累加2取数得到一个数组C, 依次为1、 3、 5?? 17、19。C(i)表示的是数组中的第几个数。5 (4)输入A=[7 1 5;2 5 6;3 1 5],B=[1 1 1; 2 2 2; 3 3 3],在命令窗口中执行下列 表达式,掌握其含义A(2, 3) A(:,2) A(3,:) A(:,1:2:3) A(:,3).*B(:,2) A(:,3)*B(2,:) A*B A.*B A^2 A.^2 B/A B./A6 7 (5)二维数组的创建和寻访,创建一个二维数组(4×8)A, 查询数组A第2行、第3列的元 素,查询数组A第2行的所有元素,查询数组A第6列的所有元素。8 (6)两种运算指令形式和实质内涵的比较。设有3个二维数组A2×4,B2×4,C2×2,写出所有由 2个数组参与的合法的数组运算和矩阵指令。创建数组:加法、减法(需两个数组阶数相同):9 数组乘法(需两个数组阶数相同):数组乘方(需两个数组阶数相同):矩阵左除:10 数组左除:矩阵右除:数组右除:(7)学习使用表8列的常用函数(通过help方法)11 12 (8)学习使用表9数组操作函数。13 (10)用reshape指令生成下列矩阵,并取出方框内的数组元素。14 四、实验1、通过本次实验, 我初步学习使用clc、clear指令, 观察command window、 command history 和workspace等窗口的变化结果。明白了两者的区别Clc:是清除workspace,command window 、 command history 不变化; Clear 清除 workspace , command window 、 command history不变化。2、本次实验掌握了一些基本的运算指令,像数组和矩阵的各种运算符号,尤其要注意两者 的区别。例如A*B是指内维相同矩阵相乘,而A.*B是指A数组与B数组对应元素的相乘。同 时注意矩阵的左乘和右乘。例如A/B是A右除B,指B矩阵乘以A矩阵的逆;而B/A是A左除B, 指A矩阵乘以B矩阵的逆。3、此外,本实验要掌握一些标准数组生成函数的使用,例如diag(产生对角行矩阵)、eye (产生单位矩阵)等;还有一些数组操作函数,例如det(求方阵的行列式值),rank(求 矩阵的秩)。实验二 MATLAB 数值及符号运算一、 实验目的1.了解伴随矩阵、稀疏矩阵、魔方矩阵、对角矩阵、范德蒙等矩阵的创建,掌握矩阵的基本 运算 2.掌握矩阵的数组运算 3.掌握多项式的基本运算 4.会求解代数方程 5.掌握创建符号表达式和矩阵的方法 6.掌握符号表达式的微分和积分运算二、 实验基本知识1、创建矩阵的方法:直接输入法;用matlab函数创建矩阵 2、矩阵运算 3、矩阵的数组运算 4、多项式运算 5、代数方程组求解 6、复数运算:复数的实虚部、模和幅角计算15 7、符号矩阵的创建 1)用matlab函数sym创建矩阵(symbolic 的缩写) 命令格式:A=sym('[ 2)用字符串直接创建矩阵 8、符号矩阵的修改 a.直接修改:可用?、 ?键找到所要修改的矩阵,直接修改 b.指令修改:subs(A, 'new', 'old')来修改 9、符号矩阵与数值矩阵的转换 将数值矩阵转化为符号矩阵,函数调用格式:sym(A) 将符号矩阵转化为数值矩阵,函数调用格式numeric(A) 10、符号微积分与积分变换 11、符号代数方程求解 solve(f) ―― 求一个方程的解 solve(f1,f2, ?fn) ―― 求n个方程的解 12、符号微分方程求解指令:dsolve ]')三、实验内容1、生成一个3行3列的随机矩阵,并逆时针旋转90°,左右翻转,上下翻转。16 2、已知a=[1 2 3],b=[4 5 6], 求a.\b和a./ b3、数组和矩阵有何不同? 答数组运算是指对数组中的每个元素进行相同的运算, 矩阵和二维数组在数据结构上是完 全相同的,但矩阵的运算在数学上有严格的运算规则定义,和数组运算是不同的。(1)点运算。MATLAB运算符提供了点运算功能。在常用的算数运算符前面加上一个“.”则 代表运算是按照数组运算规则进行运算,否则是按照矩阵运算规则进行运算的。(2)MATLAB中有些运算函数的名字是某个函数名字后加了一个字母m,通常情况下,这两个 函数的运算功能是相同的,只是加了m的函数按照矩阵运算规则运算,另外一个函数按照数 组运算规则运算。17 4、已知a=[1 2 3;4 5 6;7 8 0],求其特征多项式并求其根。5、已知多项式a(x)=x +2x+3,b(x)=4x +5x+6,求a,b的积并微分。226、求解方程 1) ?? x1 ? 2 x2 ? 8 ?2 x1 ? 3x2 ? 1318 ? x1 ? 2 x 2 ? 1 ? 2) ?2 x1 ? 3x 2 ? 2 ?3 x ? 4 x ? 3 2 ? 13) ?? x1 ? 2 x2 ? 3x3 ? 1 ?2 x1 ? 3x 2 ? 4 x3 ? 219 7、用两种方法创建符号矩阵,A =[ a, 2*b] [3*a, 并把其中的a改为c。方法一0]方法二:8、计算二重不定积分?? xe? xydxdy20 9、对符号方程f = ax2+bx+c 求解1)对x求解2)对a求解。10、求解微分方程d2y dy dy ? 2 ? 2 y ? 0, y (0) ? 1, (0) ? 0 。2 dx dx dx四、实验总结1、通过本次实验,我初步了解伴随矩阵、稀疏矩阵、魔方矩阵、对角矩阵、范德蒙等矩阵 的创建,掌握了矩阵的一些基本运算。2、通过实验以及课外自己的练习,我基本掌握了矩阵的数组运算、多项式的基本运算、解 代数方程、创建符号表达式、创建符号矩阵、以及符号表达式的微分和积分运算。3、 我们应该要充分认识到数组和矩阵的一些基本区别。一维数组相当于向量,二维数组相当 于矩阵.所以矩阵是数组的子集。两者的本质区别是计算时有不同的算法矩阵有其自身的 一套运算关系, 参与运算的单元不同数组运算是每个元素均参加运算, 即 Matlab 中的点 运算如.*,./,.^等。其次,矩阵在 Matlab 中是按列排放数据而在其他编程软件中,多数 是按行排列数据,称之为数组。4、要想提高自己的MATLAB水平,不仅要在实验课上认真完成实验,在实验后,也要认真思 考,多做练习,这样才能有所提高,有所进步。21
【matlab实验报告小结】华 北 电 力 大 学实 验 报 告实验 环境 实验 名称MATLAB 7.0 实验一:熟悉 MATLAB 环境及 Matlab 基本操作实 验 目 的1、熟悉 MATLAB 环境及各种基本 Matlab 操作MATLAB 是以复杂矩阵作为基本编程单元的一种程序设计语言。它提供了各 种矩阵的运算与操作,并有较强的绘图功能。利用 FILE 菜单可方便对文件或窗口进行管理。其中 FILE|NEW 的各子菜单, M-FILE(M 文件)、FIGURE(图形窗口)、或 MODEL(SIMULINK 编辑界面) 分别可创建对应文件或模块。EDIT 菜单允许用户和 WINDOWS 的剪切板交互信 息。MATLAB 语言最基本的赋值语结构为:变量名列表=表达。表达式由操作 符或其它字符,函数和变量名组成,表达式的结果为一个矩阵,显示在屏幕上, 同时输送到一个变量中并存放于工作空间中以备调用。如果变量名和“=”省略, 则 ANS 变量将自动建立,例如键入:1900/81,得到输出结果:ans =23.4568。在 MATLAB 中把数据绘成图形可有多种命令一供选择。下面列出了这些命令绘图命令实 验 原 理Plot 线性 X-Y 坐标图 Loglog 双对数坐标图 Semilogx X 轴对数半对数坐标图 Semilogy Y 轴对数半对数坐标图 Polar 极坐标图 Mesh 三维消隐图 Contour 等高线图 Bar 条形图 Stairs 阶梯图第 1 页 华 北 电 力 大 学实 验 报 告除了可以在屏幕上显出图形外,还可以对屏幕上已有的图形加注释、题头或坐标 网格。图形加注 Title 画题头 Xlabel x 轴标注 Ylabel y 轴标注 Text 任意定位的标注 Gtext 鼠标定位标注 Dgrid 网格 关于坐标轴尺寸的选择和图形处理等控制命令图形控制命令 Axis 人工选择坐标轴尺寸 Clg 清除图形窗口 Ginput 利用鼠标的十字准线输入 Hold 保持图形 Shg 显示图形窗口 Subplot 将图形窗口分成 N 块子窗实 验 原 理第 2 页 华 北 电 力 大 学实 验 报 告实 验 内 容&验证性实验& 1、将 Matlab 当前目录变更到 D:\自己姓名拼音文件夹下,并建立新文件画出 y=2 * x 的曲 线,并将曲线图形保存在当前目录下。2、使用 for 语句及 while 语句求解 1 至 100 整数中奇数的和。&设计性实验& 3、用 MATLAB 程序建立九九乘法表。4、求连续自然数的和,当和大于等于 1000 时,求最后一个自然数以及自然数的和。5、MATLAB 函数是可以递归调用的,即在函数的内部调用函数自身,试用递归方式编写 n!函数。实验 1:程序如下x=1:10y=2*x; plot(x,y)仿真结果:实 验 结 果 及 分 析实验结果分析仿真结果是条很规则的直线,X 轴和 Y 轴一一对应,清楚明了,而序又特别简单。所以用 Maltab 软件很方便地画出规则的直线,方便研究。第 3 页 华 北 电 力 大 学实 验 报 告实验 2:程序如下:clear all sum=0; for n=1:2:97 sum=sum+n; end sum=sum+99 disp('程序运行结束!')实验结果如下。实 验 结 果 及 分 析实验 2 结果分析这道题有多种方法,例如如下程序:clear all sum=0; for i=1:2:100 sum=sum+i; end sum这道题需要注意的一点是语句sum=sum+i 后要加分号。这样就不会出现i每赋 值一次窗口就显示一次sum 值。实验 3:程序如下:clear all for x=1:9 a=[]; for y=1:x term=([num2str(y),'*',num2str(x),'=',num2str(x*y,'%2d')]); if x*y&10 term=[term,' else term=[term,' ']; end a=[a,term]; end disp(a) end '];第 4 页 华 北 电 力 大 学实 验 报 告实验 3 仿真结果:实验 4 程序如下:clear all n=0; sum=0; while(sum&1000) n=n+1;实 验 结 果 及 分 析endsum=sum+n; str1 = ['最后一个自然数为:',num2str(n)]; str2 = ['计算结果为:',num2str(sum)]; disp(str1) disp(str2)实验4结果为:实验 5 程序:n=input('n'); sum=1; if(n==0) else for end end sum m=1:n sum=sum*m;仿真结果n5 sum = 120第 5 页 华 北 电 力 大 学实 验 报 告实验 名称实验二Matlab 在通信原理中的应用实 验 目 的1、掌握通信原理课程中基本知识的 Matlab 编程、仿真方法实验 1 程序:dt = 0.001; A = 0.5; s_am = (A + mt).* sin(2 * pi * fc * t); B = 2 * figure(1) subplot(311) plot(t,s_am); plot(t,A + mt,'r--'); title('AM调制信号及其包络'); xlabel('t'); rt = s_am.*cos(2 * pi * fc * t); rt = rt - mean(rt); [f,rf] = T2F(t,rt); [t,rt] = lpf(f,rf,2 * fm); subplot(312) plot(t,rt); plot(t,mt/2,'r--'); title('相干解调后的信号波形与输入信号的比较'); xlabel('t') subplot(313) [f,sf]=T2F(t,s_am); psf = (abs(sf).^2)/T; plot(f,psf); axis([ -2*fc 2*fc 0 max(psf)]); title(AM信号功率谱'); xlabel('f'); fm = 2; fc = 10; T = 5; t = 0:dt:T; mt = sqrt(2) * cos(2 * pi * fm * t);实 验 原 理第 6 页 华 北 电 力 大 学实 验 报 告实 验 内 容&设计性实验& 1、用 Matlab 产生一个频率为 2Hz、功率为 1 的正弦信源 m(t),设载波频率为 10Hz,A 分 别等于 0.5、1、1.5,试画出(1)AM 调制信号; (2)调制信号的功率谱密度; (3)相干解调后的信号波形(选做) (4)研究调制深度与失真的关系。(选做) &设计性实验&(选做) 2、消息 m(t ) 是周期为 2s 的周期信号,它在区间 [0, 2] 的定义如下:0.1 ? t ? 1 ?t ? m(t ) ? ??t ? 2 1 ? t ? 1.9 ?0 其它 ?该信号用 DSB 方案调制 50Hz 的载波。(1)绘出调制信号。(2)绘出调制信号的频谱。(3)比较调制信号和未调制信号的频谱。1、 A=0.5实 验 结 果 及 分 析2、 A=1第 7 页 华 北 电 力 大 学实 验 报 告A=1.5实 验 结 果 及 分 析实验 名称实验三 Matlab 在信号与系统中的应用实 验 目 的1、掌握信号与系统课程中基本知识的 Matlab 编程、仿真方法实验1程序:b=[1]; a=[1 1]; p=0.5; t=0:p:5; x=exp(-3*t); subplot(1,2,1);实 验 原 理impulse(b,a,0:p:5); title('冲激响应'); subplot(1,2,2); step(b,a,0:p:5); title('阶跃响应');第 8 页 华 北 电 力 大 学实 验 报 告实 验 内 容&设计性实验& 1、用 MATLAB 在时域中编程求解 y′(t)+y(t)=f(t), f(t)= exp(-3t)ε(t)的冲激响应、阶跃响应。在 simulink 仿真环境下,设计系统框图,分析系统的冲激响应、阶跃响应。&设计性实验&(选做) 2、用 MATLAB 在时域中编程求解 y′(t)+y(t)=f(t), f(t)=(1+exp(-3t))ε(t)的冲激响应、阶跃响 应,要求用 conv 编程实现系统响应。在 simulink 仿真环境下,设计系统框图,分析系统 的冲激响应、阶跃响应。实验 1 仿真结果:simulink 仿真环境下冲激响应实 验 结 果 及 分 析阶跃响应第 9 页 华 北 电 力 大 学实 验 报 告实 验 名 称 实 验 目 的实验四 Matlab 在数字信号处理中的应用1、掌握数字信号处理课程中基本知识的 Matlab 编程、仿真方法实验 1 程序:t1=0:1/; x1=1+cos(2*pi*5000*t1); subplot(4,1,1); plot(t1,x1); title('采样频率为6千赫兹 '); xlabel('时间'); t2=0:1/; x2=1+cos(2*pi*5000*t2); subplot(4,1,2); plot(t2,x2); title('采样频率为12千赫兹'); xlabel('时间'); F1=fft(x1,1024);实 验 原 理n=0:1023; f=6000*n/1024; subplot(4,1,3); plot(f,abs(F1));title('6000Hz频谱'); F2=fft(x2,1024); n=0:1023;f=12000*n/1024; subplot(4,1,4); plot(f,abs(F2));title('12000Hz频谱');第 10 页 华 北 电 力 大 学实 验 报 告实 验 内 容&设计性实验& 1、对于连续信号 x(t)=1+cos(2πft),其中 f=5kHz,分别以采样频率 fs=6 kHz 和 fs=12kHz 对 其进行采样, (1)分别绘出对应的采样信号。(2)对信号进行傅里叶变换,绘出对应的曲线。(3)在 simulink 仿真环境下,设计系统框图,观察信号的频谱成分。&设计性实验&(选做) 2 、 对 于 连 续 信 号 xa (t ) ? cos(2?f1t ) ? 5 cos(2?f 2t ) ? cos(2?f 3t ) , 其 中 f1 ? 6.5kHz ,f 2 ? 7kHz,对信号进行傅里叶变换。设计合适的采样频率对信号进行采样。对信号进行快速 傅里叶变换 FFT,分析信号的频谱成分。在 simulink 仿真环境下,设计系统框图,分析信号的 频谱成分。实验 1 仿真结果:实 验 结 果 及 分 析6khz12kHZ第 11 页 华 北 电 力 大 学实 验 报 告实 验 总 结学习了 MATLAB 这门课程,我了解该软件的基本功能,也知道了该软件 在我们生活中的重要地位。随着社会的不断发展,科技的不断进步,计算机 的普及,它也被应用在越来越多的方面。MATLAB 的基本数据单位是矩阵,它的指令表达式与数学、工程中常用 的形式十分相似,故用 MATLAB 来解算问题要比用 C,FORTRAN 等语言完 成相同的事情简捷得多,MATLAB 的最突出的特点就是简洁。MATLAB 的功能是非常强大的,MATLAB 不仅有强大的运算功能,它还 有强大的绘图功能,我对它的了解也仅仅就是一点点,或许说还没有入门。比 如说它含有丰富的内建函数,例如数学函数中的三角函数、复函数、多项式函 数、数据分析函数的求平均值、最大最小值、排序等,以及逻辑/选择函数如 if -else 等,还有用来模拟随机发生事件的随机函数。这些我都不了解。虽学习 MATLAB 的时间虽然很短, 但却让我了解到了它的强大和它的功 能。我想就算时间足够,老师也不能把所有的都讲解给我们,因为一个软件的 功能需要我们自己不断的去摸索。老师只是个指路的明灯,最终的学习还是要 靠自己。而且在摸索过程中,我们能够发现和学习的快乐!第 12 页
【matlab实验报告小结】通过《matlab 仿真》实验使我学习掌握了许多知识。首先是对 matlab 有了一个全新的 认识,其次是对 matlab 的更多操作和命令的使用有了更高的掌握,最重要的事对 matlab 的 处理能力有了一个更高的飞跃尤其是对相关函数的使用及相关问题的处理。就对 matlab 相关的命令操作而言,通过这次实验的亲身操作和实践,学习掌握了许多 原本不知道的或者不太熟悉的命令。比如说相关 m 文件的建立,画图用到的标注,配色, 坐标控制,同一张图里画几幅不同的图像,相关参数的设置以及相关函数的调用格式等等。就拿建立一个数学方程而言, 通过设置不同的参数达到所需要的要求和结果, 而且还可以在 不同的窗口建立不同的函数而达到相同的效果,比如说可以再命令窗口和 m 文件中通过不 同的命令设置的到相同的所需的效果图。而自己对于矩阵及闭环传递函数的建立原本所掌握 的知识几乎为零, 而通过这次实验使我彻底的掌握了相关的命令操作和处理的方法, 在这里 我们不仅可以通过建立函数和参数来达到目标效果, 而且还可以通过可视化的编程达到更快 更方便,更简洁的效果。就拿可视化编程而言原本根本就只是听说而已罢了,从来就没有亲 身去尝试过,然而现在自己却可以和容易的通过搭建不同功能木块来实现相关的函数及功 能。这些在原本根本就不敢相信,然而通过《matlab 仿真》的学习和实验亲身操作这些原本 看似不可能的操作在此就变的轻而易举的事了。再此我不得不题到的事指导老师教我们怎么去搭建构造相关闭环传递函数的实验,这 个实验几乎在我们的这次实验中占据了非常大的比重, 在后面的几个大一点的实验中几乎都 是涉及这个方面的内容,我现在想说的事怎么去搭建相关的函数和功能模块对 我们来说几 乎已经不是什么难事了, 就拿怎么去对模块功能的实现以及分析确实是个重点和难点。通过 对同一个模块分析其对应的不同的参数分析图的建立去分析和解释其对应的相关功能和技 术指标和性能分析是非常重要的, 我们不可能只需要建立相关的模块和功能就说自己掌握了 所有的相关知识和技术, 真正的技术和知识是怎么去分析和解释相关的技术指标和功能参数 才是重中之重。就此而言,我坦诚的说自己所掌握的还是十分的有限的,但是老师给我们介 绍的相关方法和技巧还是十分有效果的, 如果自己真的想在这方面有什么建树对自己以后的 要求还是需要更改的要求的,万不可以就此止步不前,自命不凡,我们还需掌握和了解还有 许多许多, 我们真正所掌握的只是皮毛, 要想取得更大的成绩就得不断的去努力学习和汲取 相关的知识和技巧。万不可自以为傲,裹足不前,matlab 真的是个非常强大和有用的工具我 们真正的能把它学懂学透的话还是需要下非常大的功夫和努力的。然而, 不是说兴趣才是最 大的老师嘛,我也相信,只要你自己有兴趣,即使它再怎么强大和难搞,我们能做的还是非 常多的,关键的就只是在于你自己的态度了。我这里想说的事,matlab 对于我来说是非常有 吸引力的,我不敢说自己多么喜欢它,但是兴趣确实蛮高的,所以我相信在以后的学习和工 作当中 matlab 将成为我非常有用的帮忙工具和好伙伴,也许这要说有点太草率了,但是我 觉得对它的评价怎么也不会让每一个接触过它的人吝啬是自己赞美之。它不仅仅可以用来 建模分析函数, 还可以用来进行图形的建模和仿真, 还可以用来分析系统和函数的参数稳定 性等等。再次就不一一列举了,我怕三天也不会说完的。 最后我再次也希望通过这篇总结来表达自己对知道老师的感谢之情,谢谢您的不懈努 力和耐心指导, 才使得我再这次的实验过程中收获的这么多, 也正式您的不吝教诲才使得我 们在这次实验中学习和收获了许多的有用的知识和技巧, 我相信在以后的学习或者工作中一 定有其用武之地。过多的感谢无以言表,万分感激,百口不胜言表,至此敬礼!
【matlab实验报告小结】扬州大学专业软件应用综合设计报告水能学 院 11 级电气 专业题目 异步电动机综合仿真设计二学生王青东学 号 指导张建华2013 年 12 月 28 日1 2 直流电动机综合仿真设计二摘要:本文主要介绍了并励直流电动机在恒定负载、风机性负载、恒功率负载运行下的 启动调速仿真,调速中主要运用四级串阻调速的方式,通过对转速、电枢电流、励磁电流、 电磁转矩波形的观察,进一步分析并励直流电机的运行规律;同时,还附带的讲解了一些有 关 MATLAB 中 SIMULINK 模块的使用与连接,还有异步电机参数的设置、变压器参数设定和 理想开关开断时间的设定,本文都将一一解释。关键字:并励直流电机;串阻调速;负载;负载;MATLAB;3 1 引言直流电动机因其性能宜于在广泛范围内平滑调速,其调速控制系统历来在工业控制具 有及其重要的地位。直流调速控制系统中最典型一种调速系统就是转速、 电流双闭环调速系 统。在当今社会,仿真技术已经成为分析、研究各种系统尤其是复杂系统的重要工具,为了 简便工程设计和解决设计中可能出现的问题,掌握 SIMULINK 仿真环境常用模块库和电力系 统模块库,对直流电动机调速进行仿真设计就成为我们今天急需探讨的课题。计算机仿真技术是应用电子计算机对研究对象的数学模型进行计算和分析的方法。对于 从事控制系统研究与设计的技术人员而言,MATLAB 是目前控制系统计算机辅助设计实用且 有效的工具。这不仅是因为它能解决控制论中大量存在的矩阵运算问题, 更因为它提供了强 有力的工具箱支持。与控制系统直接相关的工具箱有控制系统、系统辨识、信息处理、优化 等。还有一些先进和流行的控制策略工具箱,如鲁棒控制、u-分析与综合、神经网络、模糊 预测控制、非线性控制设计、模糊逻辑等。可以说目前理论界和工业界广泛应用和研究的控 制算法,几乎都可以在 MATLAB 中找到相应的工具箱。同时,MATLAB 软件中还提供了新的控制系统模型输入与仿真工具 SIMULINK,它具有构 造模型简单、动态修改参数实现系统控制容易、界面友好、功能强大等优点,成为动态建模 与仿真方面应用最广泛的软件包之一。它可以利用鼠标器在模型窗口上“画”出所需的控制系 统模型,然后利用 SIMULINK 提供的功能来对系统进行仿真或分析,从而使得一个复杂系统 的输入变得相当容易且直观。将 SIMULINK 用于电机系统的仿真研究近几年逐渐成为人们研究的热点。本文以此为 基础,运用模糊逻辑控制,建立了电机控制系统的仿真模型,并通过了可靠的仿真实验。本实验的目的是通过 MATLAB 的仿真实验,对并励直流电动机在恒定负载、 风机性负载、 恒功率负载运行下的启动调速仿真,调速中主要运用四级串阻调速的方式,通过对转速、电 枢电流、励磁电流、电磁转矩波形的观察,进一步分析并励直流电机的运行规律。4 2 设计依据及框图2.1 设计平台1.仿真技术的背景 仿真技术作为一门综合性的科学已有四十多年的发展历史,其间经历了物理模型仿真,模 拟计算机仿真和数字计算机仿真。早期,人们采用计算机高级程序语言对系统进行仿真 ,如 BASIC、FORTRAN、PASCAL 等。近些年,C 语言用得最为普遍。用计算机高级程序语言编制的 系统仿真程序,不但要详尽描述各类事件的发生和处理情况,还要规定各类事件的处理顺序。这样,即便是一个很简单的系统,程序也会很长,难于调试。同时,为了设计出优良的人机界面, 对数据输入方式和仿真结果的数据打印格式或图形表达形式要大费心思。2. Matlab 和 Simulink 简介 电子计算机的出现和发展是现代科学技术的巨大成就之一。它对科学计术的几乎一切 领域,特别对数值计算,数据处理,统计分析,人工智能以及自动控制等方面产生了极其深 远的影响。熟练掌握利用计算机进行科学研究和工程应用的技术, 已经成为广大科研设技人 员必须具备的基本能力之一。大部分从事科学研究和工程应用的读者朋友可能都已经注意到 并为之所困扰的是,当我们的计算涉及矩阵运算或画图时,利用 FORTRAN 和 C 语言等计算 机语言进行程序设计是一项很麻烦的工作。Matlab 正是为了免除无数类似上述的尴尬局面 而产生的。在 1980 年前后,美国的 Cleve 博士在 New Mexico 大学讲授线性代数课程时,发 现应用其它高级语言编程极为不便,便构思并开发了 Matlab(MATrix LABoratory,即矩阵实 验室) ,它是集命令翻译,科学计算于一身的一套交互式软件系统,经过在该大学进行了几 年的试用之后,于 1984 年推出了该软件的正式版本,矩阵的运算变得异常容易。为了准确的把一个控制系统的复杂模型输入给计算机,然后对之进行进一步的分析与仿真, 1990 年 MathWorks 软件为 Matlab 提供了新的控制系统模型图形输入与仿真工具, 并定 名为 Simulnk,该工具很快在控制界得到了广泛的应用。但因其名字与著名的软件 Simula 类 似,所以在 1992 年正式改名为 Simulink。此软件有两个明显的功能:仿真与连接,亦即可 以利用鼠标器在模型窗口上画出所需要的控制系统模型, 然后利用该软件提供的功能来对系 统直接进行仿真。很明显,这种做法使得一个很复杂系统的输入变得相当容易。Simulink 的 出现,更使得 Matlab 为控制系统的仿真与其在 CAD 中的应用打开了崭新的局面。目前的 Matlab 已经成为国际上最为流行的软件之一,它除了传统的交互式编程外,还提供 了丰富可的矩阵运算,图形绘制,数据处理,图像处理,方便的 Windows 编程等便利工具,5 由各个领域的专家学者相继推出了以 Matlab 为基础的实用工具箱工具箱,其中主要有信号处 理、控制系统、神经网络、图像处理、鲁棒控制、非线性系统控制设计、系统辨识、最优化、 μ 分析与综合、模糊逻辑、小波、样条等工具箱,而且工具箱还在不断增加。借助其强大的 功能,Matlab 广泛应用于自动控制、图像信号处理,生物医学工程,语音处理,雷达工程, 信号分析,振动理论,时序分析与建模,化学统计学,优化设计等领域,并表现出一般高级 语言难以比拟的优势。3. Matlab 建模与仿真 长期以来, 仿真领域的研究重点在仿真模型建立这一环节上, 即在系统模型建立以后, 要设计一种算法以使系统模型等为计算机所接受,然后再将其编制成程序在计算机上运行, 因此,建模通常需要很长一时间,同时仿真结果的分析必须依赖有关专家,而对决策者缺 乏直接的指导。Matlab 提供的动态系统仿真工具 Simulink 可有效解决上述仿真技术问题。在 Simulink 中,建立系统模型,可以随意改变仿真参数,即时得到修改后的仿真结果。Matlab 中的分析与可视化工具多种多样且易于操作。利用 Simulink 对动态系统做适当仿真 和分析,可以在实际做出系统之前进行,以便对不符合要求的系统进行适时校正,增强系统 性能,减少系统反复修改的时间,实现高效开发系统的目标。动态仿真结果用图形方式显 示在示波器的窗口或将数据以数字方式显示出来。常用的 3 种示波器为 Scope,XY Graph 和 Display。4. Simulink 仿真工具 为了准确地把一个控制系统的复杂模型输入给计算机 ,然后对之进行进一步的分析与 仿真,MathWorks 公司为 MATLAB 提供了新的控制系统模型图形输入与仿真工具 ,并定名为 Simulink。MATLAB 软件的 Toolbox 工具箱与 Simulink 仿真工具,为控制系统的计算与仿真提供了一个 强有力的工具,使控制系统的计算与仿真的传统方式发生了革命性的变化。MATLAB 已经成 为国际、国内控制领域内最流行的计算与仿真软件。Simulink 有两个明显的功能:仿真与连接,亦即可以利用鼠标器在模型窗口上画出所需的控制 系统模型,然后利用该软件提供的功能来对系统直接进行仿真。很明显,这种做法使得一个很 复杂系统的输入变得相当容易。Simulink 的出现,更使得 Matlab 为控制系统的仿真与其在 CAD 中的应用打开了崭新的局面。Simulink 是一个用来对动态系统进行建模、 仿真和分析的软件包,不仅界面友好且支持更灵活 的模型描述手段。用户既可直接用方块图来输入仿真模型,也可用 Matlab 语言编写 M-文件6 来输入。既可以纯图形方式输入,也可以纯文本方式来输入。还可将上述两种方法交叉混合 使用。既可对连续系统也可对离散系统进行仿真,还适合于采样保持系统。同时,它也具有能 在仿真进行的过程中动态改变仿真参数的功能。因此可以不难理解它自推出以后,就一直受 到欧美和日本等国家或地区的控制界学者的青睐。Simulink 为用户提供了方框图进行建模的图形接口,采用这种结构画模型就像你用笔和纸来 画一样容易。它与传统的仿真软件包用微分和差分方程建模相比,具有更直观、方便、灵活 的优点。Simulink 包含有 Sinks(输出方式)、Source(输入源)、Linear(线性环节)、Nonlinear(非 线性环节)、Connections(连接与接口)和 Extra (其它环节)子模型库,而且每个子模型库中包含 有相应的功能模块。用户也可以定制和创建用户自已的模块。用 Simulink 创建的模型可以具有递阶结构,因此用户可以采用从上到下或从下到上的结构创 建模型。用户可以从最高级开始观看模型,然后用鼠标双击其中的子系统模块,来查看其下一 级的内容,以此类推,从而可以看到整个模型的细节 ,帮助用户理解模型的结构和各模块之间 的相互关系。在定义完一个模型以后,用户可以通过 Simulink 的菜单或 Matlab 命令窗口键入命令来对它进 行仿真。菜单方式对于交互工作非常方便,而命令行方式对于运行一类仿真非常有用。采用 Scope 模块和其它的画图模块,在仿真进行的同时,就可观看到仿真结果。除此之外,用户还可 以在改变参数后能迅速观看系统中发生的变化情况。仿真的结果还可以存放到 Matlab 的 Workspace(工作空间)里做事后处理。由于 Matlab 和 Simulink 是集成在一起的,因此用户可以在这两种环境下对自已的模型进行仿 真、分析和修改。5.控制系统计算机仿真的过程 控制系统仿真, 就是以控制系统的模型为基础, 主要用数学模型代替实际的控制系统, 以计算机为工具,对控制系统进行实验和研究的一种方法。通常控制系统仿真的过程按以下步骤进行第一步,建立自控系统的数学模型。系统的数学模型,是描述系统输入、输出变量以 及内部各变量之间关系的数学表达式。描述系统诸变量间静态关系的数学表达式, 称为静态 模型;描述自控系统诸变量间动态关系的数学表达式,称为动态模型。常用最基本的数学模 型是微分方程与差分方程, 根据系统的实际结构与系统各变量之间所遵循的物理、 化学基本 定律,例如牛顿定律、克希霍夫定律、运动动力学定律、焦耳楞次定律等来列写出变量间的 数学模型。这是解析法建立数学模型。对于很多复杂的系统,则必须通过实验方法并利用系7 统辨识技术,考虑计算所要求的精度,略去一些次要因素,使模型既能准确地反映系统的动 态本质,又能简化分析计算的工作。这是实验法建立数学模型。控制系统的数学模型是系统 仿真的主要依据。第二步,建立自控系统的仿真模型。原始的自控系统的数学模型比如微分方程,并不 能用来直接对系统进行仿真。还得将其转换为能够对系统进行仿真的模型。对于连续控制系 统而言,有像微分方程这样的原始数学模型,在零初始条件下进行拉普拉斯变换,求得自控 系统传递函数数学模型。以传递函数模型为基础,等效变换为状态空间模型,或者将其图形 化为动态结构图模型,这些模型都是自控系统的仿真模型。对于离散控制系统而言,有像差 分方程这样的原始数学模型以及类似连续系统的各种模型, 这些模型都可以对离散系统直接 进行仿真。第三步,编制自控系统仿真程序。对于非实时系统的仿真,可以用一般的高级语言, 例如 Basic、Fortran 或 C 等语言编制仿真程序。对于快速的实时系统的仿真,往往用汇编语 言编制仿真程序。当然也可以直接利用仿真语言。如果应用 MATLAB 的 Toolbox 工具箱及其 Simulink 仿真集成环境作仿真工具,这就是 MATLAB 仿真。控制系统的 MATLAB 仿真是控制 系统计算机仿真一个特殊软件工具的子集。第四步,进行仿真实验并输出仿真结果。进行仿真实验,通过实验对仿真模型与仿真程序进 行检验和修改,而后按照系统仿真的要求输出仿真结果。8 2.2 设计1、并励直流电动机额定运行时,观察转速、电枢电流、励磁电流、电磁转矩; 2、并励直流电动机三级串阻起动调速,观察转速、电枢电流、励磁电流、电磁转矩变化规 律; 3、直流电机串阻调速时,伴随着机械和电气过渡过程,其理论分析十分复杂,常采用稳定 运行分析调速,通过仿真方法可以分析过渡过程和稳定运行状态。4、串调速属恒转矩调速方式,常用于恒转矩负载,对于恒功率负载和风机性常不采用。5、并励直流电动机额定运行时,观察转速、电枢电流、励磁电流、电磁转矩。6、在额定负载时,并励直流电动机四级串阻起动调速,观察转速、电枢电流、励磁电流、 电磁转矩变化规律。7、在恒功率负载时,并励直流电动机四级串阻起动调速,观察转速、电枢电流、励磁电流、 电磁转矩变化规律。8、在风机性负载时,并励直流电动机四级串阻起动调速,观察转速、电枢电流、励磁电流、 电磁转矩变化规律。9 2.3 设计结构框图或流程图直流电动机综合仿真设计并 励 直 流 电 动 机 额 定 运 行四 级 串 阻 起 动 调 速并 励 直 流 电 动 机 额 定 运 行 时运 行 时 四 级 串 阻 起 动 调 速并 励 直 流 电 动 机 恒 功 率 负 载运 行 时 四 级 串 阻 起并 励 直 流 电 动 机 风 机 性 负 载10 2.4 各模块功能简介(1) 、在新建的 simulink 仿真窗口中,拖入直流电机、直流电压源、常数、增益、分解、示 波器等模块,然后按照下图进行连接,建立仿真模型如图 1 所示。图1(2) 、串阻调速 SIMULINK 仿真模型如图 2 所示图2(3) 、观察对恒功率负载和风机性负载采用串阻调速时的转速、电枢电流、励磁电流、电磁 转矩,恒功率负载 SIMULINK 模型如图 3 所示,风机性负载 SIMULINK 模型如图 4 所示:11 图3图4 (4) 、各器件功能简介12 DC Voltage Source Series RLC Branch Constant Demux DC Machine Gain Powergui Scope Step提供一个直流电压源 串联 RLC 支路 常量模块 分离器 直流电机 放大增益 电力分析模块 示波器 输出阶跃信号 DC Voltag e Sourc e:直 流 电压源在电力系统中可以用来实现实现一个滞留的电压源,如操作电源等。MATLAB 软件提供 的直流电源为理想的直流电压源。双击 Series RLC Branch(串联 RLC 分支)元件,将得出对话框,在对话框中适当地输入 电阻、电容和电感的参数即可。填写参数时应该注意其单位。遗憾的是这里不包含单个的电阻、电容和电感元件,可以从串、并联的分支来定义单独 的电路。具体情况见下表。13 元件串联 RLC 分支并联 RLC 分支类型电 阻 数 值电 感 数 值 0电容数值电 阻 数 值电 感 数 值 inf电 容 数 值 0单 个电 阻 单 个电 感 单 个电 容RinfR0LinfinfL000CinfinfCDemux 多路分配器模块提取输入信号的部件和组件作为单独的信号输出。责令从上到下输出端 口的输出信号。各种块方向的端口顺序的描述,请参阅 See How to Rotate a Block。为了避免 加入杂乱模型,当您复制从 Simulink 库模型,Simulink 中隐藏 Demux 块的名称。有关创建和 分解矢量的信息,请参阅 Mux Signals。Number of outputs参数允许你指定的数量,选择性地,每个输出端口的维数。如果你不指 定输出的维数,模 块判断为您的输出的维数。多路分配器模块操作,无论是矢量模式或总线选择的模式,取 决于你是否选择了 Bus selection mode 参数。这两种模式他们接受的信号类型不同。矢量 模式接受只是一个矢量信号,那就是一个标量(一个元素的数组) ,或载体(1-D 数组) ,或 一列或行向量 (2-D 数组一行或一列) 。总线选择模式只接受一个总线信号。Number of outputs 参数决定了模块输出的数量和维,这取决于在该模块的工作模式。DC Machine:六个端口分别为F+,F-:这两个端口是接电机的励磁电源的,分别接正负极 A+,A-:这个就是通常意义上的电源了,同样是正负极 TL:负载输入端,给电机加负载就往这儿加 m:测量端口,这里输出了电机的各项参数,如电流,转速等14 示波器可以接受多个输入信号, 每个端口的输入信号都将在一个坐标轴中显示出来, 并 以不同的颜色加以区分。若为离散信号,则显示信号的阶梯图。示波器工具栏介绍:依次为 Print 打印 Scope Parameters 示波器参数 Zoom in x and y directions 区域放大 Zoom in x directionx z 轴放大 Zoom in y direction y 轴放大 autoscale 自动 尺寸 (复原) save axes settings 保存轴的设定 restore axes settings 恢复轴的设定 floating scope 浮动示波器 Unlock axis selection 解锁 Signal Selection 信号选择 坐标轴的范围调整:在坐标框内单击鼠标右键-Axes properties 示波器参数设置 点击“示波器参数”按键,弹出示波器参数对话框,该对话框包含两个标签页,分别是 “常规(General)”和“数据(Data history)”标签页, 常规“General”标签页 坐标个数 Number of axes 文本框:用于设定示波器轴的个数,即示波器的输入信号端口 的个数,默认值为 1, 即该示波器用以观察一路信号。若将其设为 2,则可以同时 观察两 路信号,示波器的图标也自动变为两个输入端口。依此类推,一个示波器可设置为同时观 察多路信号。即示波器可以实现多个输入信号的显示 Time range:用于设定 X 轴(时间轴)的显示范围用于设定示波器时间 轴的最大值, 一般可选“自动”(auto),这样 x 轴可以自动以系统的仿真起始和终止时间作为示波器的时 间显示范围。“采样”(Sampling)下拉列表:用于选择数据取样方式, 包括“抽取”(decimation) 和“采样时间”(sample time)两种方式。“抽取”方式表示当采样下拉框右侧文本框输入 数据 N 时,从 每 N 个输入数据中抽取一个用来显示。可见,设定的数字 N 越大,显示的 波形就越粗糙,但数据存储的空间可以减少, 一般该文本框保持默认值 1,表示所有输入 数据均显示。若 采用“采样时间”方式,则需要在采样下拉框右侧文本框中输 入采样的时 间间隔,并按采样间隔提取数据显示。decimation-可设置显示频度,若设为 n,则每隔 n-1 个数据点都给予显示 sample time-若为 0,显示连续信号,-1 显示方式取决于输入信号,任何大于 0 的数据 表示显示离散信号的时间间隔 Floating scope:游离示波器 “Data history”标签页15 “仅显示的数据”(Limit data points to last)复选框用于数据点数设置。选中后,其 后的文本框被激活,默认值 为 5000,表示示波器显示 5000 个数据,若超过 5000 个数据, 也仅显示最后的 5000 个数据。若不选该项,所有数据都显 示,但对计算机内存要求较高。“ 保存数据至工作间 ”(Save data to workspace) 复选框:数据在显示的同时被保存到 MATLAB 工作空间中。若选中该项,将激活该复选框下的另两个参数设置项“变量名”文 本框用于设置保存数据的名称,以便在 MATLAB 工作空间中识别和调用该数据;“格式” 文 本框用于设置数据的保存格式。数据的保存格式有三种:“数组”(Array)格式, 用于只有一个输入变量的数据保存格式; “ 带时间变量 的结构 ”(Structure with time) 格式,用于同时保存波形数据和时间; “ 结 构”(Structure)格式,用于仅保存波形数据。图形缩放 工具栏提供了四个工具按键用以图形缩放操作。(1) 区域放大按键:首先在工具栏中点击 区域放大按键 然后在窗口中需要放大的区域上按住鼠标左键并拖曳一个 矩形框, 用矩形框 框住需要放大的图形区域,松开鼠标左 键,该区域被放大显示。(2) x 轴放大按键:首先在 工具栏中点击 x 轴放大按键, 然后在窗口中需要放大的区域按住鼠标左键,并沿 x 轴 方向 拖拉即可。(3) y 轴放大按键:首先在工具栏中点击 y 轴放大按键, 然后在窗口中需要放大 的区域上按住鼠标左键, 并沿 y 轴方向拖拉即可。(4) 自动尺寸按键使用放大按键后复原。坐标轴范围 示波器的 x 轴和 y 轴的最大取值范围一般是自动设定的, 利用图形缩放中的放大镜功能可以 在 x 轴和 y 轴的范围内 选取其中一部分显示。当需要进一步放大 y 轴的范围或更 精确地标 定 y 轴的坐标范围时,可以利用轴参数设置页进 行设置。在示波器窗口的图形区域内单击鼠标右键,在弹出的快捷 菜单中选择“Axes parameters”选 项,出现一个名为“scope properties:axis1”的轴属性对话框,如图下所示。其中的 Y-min 与 Y-max 用来设置纵轴显示数值范围;Title 项用来 给显示信号命名。Step:下面 4 行为参数设置行,分别为 Step time 阶跃信号开始时间 Initial value 初始赋值大 小 Final time 终止幅值大小 Sample time 采样间隔时间。16 3 软件调试分析3.1 并励直流电动机额定运行:1.参数设置 电机参数及基本计算并励直流电动机, PN=17kW, UN=220V, IN=88.9A, nN=3000r/min, 电枢回路总电阻 Ra=0.087 Ω ,电枢回路电感 La=0.0032H ,励磁回路总电阻 Rf=181.5 Ω ,磁场和电枢绕组互感 Laf=0.56H,电动机转动惯量 J=0.76kgm2。励磁电流为 If=Uf/Rf=220/181.5Ω ,励磁电感为 Lf=0 电枢回路电压平衡方程:UN=EaN+RaIaN 额定电枢电动势:EaN=CeΦNnN 额定电磁转矩:TN=9.55CeΦNIaN,TN=60.1Nm 模型中 DC Machine 的参数设置如下图所示模型中 Gain 的参数设置如下图所示17 模型中 DC Voltage Source 的参数设置如下图所示2.实验步骤 1.连接好仿真模型并设置好各模块的参数,以及仿真时间; 2.点击仿真开始按钮,观察仿真波形,调节时间获取最好的波形;3.仿真波形18 4.图形分析 1.起动一段时后转速由 0 rad/min 达到额定 3000 rad/min。2.起动电流很大,随着电动机的起动迅速降低,直至达到额定电流。3.励磁电流 If 为恒定值,If=Uf/Rf=220/181.5Ω 。3.转矩与电枢电流成正比关系。3.由仿真结果可看出直流电机直接起动时电流过大,必须采取措施降低起动电流,以保 护电机及其相关设备。3.2 并励直流电机串电阻调速1.基本原理 电枢电路中串入可变电阻 ra 后,电枢电流经 ra 后有电压降,使电机电枢绕组的实际电 压降低,因而也可以达到降低转速的目的从机械特性上看,电机端电压和每极磁通不变,想 空载转速 n0 也不变,而电枢回路的电阻(ra+Ra) ,ra 增加,则机械特性的斜率增加。若所 带负载是恒转矩负载,电枢回路中所串电阻越大,电机转速越低。2.串入电阻理论值计算 并励直流电机的转速公式:U ? Ia ? ra ? Ra ? ? 2 ?Un=绕组感应电势Ce?Ea=U-Ia*RaCe? ?Ea nN电枢电流Ia ? I f ? I LIf ? U Rf励磁电流3.分析计算 额定运行时,转速 n=3000r/min 励磁电流 I f ? U =220/181.5=1.212A Rf19 电枢电流 I a? I f ? I L =88.9+1.212=90.112A绕组感应电势 Ea=U-Ia*Ra=212.2VCe? ?Ea nN=0.0707(1)要求 n 将至 2500r/min 时,带入转速公式 n= 压降)。Ra+ra=U-n1*Ce ? ==0.48ΩU ? Ia ? ra ? Ra ? ? 2 ?U (忽略电刷接触电 Ce?ra1=0.48-0.087=0.392Ω(2)要求 n 将至 2000r/min 时,带入转速公式,计算得 Ra+ra2= U-n2*Ce ? =0.872Ω ra2=0.872-0.48=0.393Ω (3)要求 n 将至 1500r/min 时,带入转速公式,计算得 Ra+ra3= U-n3*Ce ? =1.265Ω ra3=1.265-Ω (4)要求 n 将至 1000r/min 时带入转速公式,计算得 Ra+ra4= U-n4*Ce ? =1.657Ω ra4=1.657-1..实验结果转速波形20 电枢电流励磁电流21 电磁转矩调速电阻 电阻值 (Ω )ra1 0.4ra2 0.4ra3 0.42ra4 0.425.结果分析 (1)调速后稳定运行时电枢电流保持不变 并励电机的转矩特性:端电压保持不变时,Rf 不变,励磁电流 If 也就不变,当负载电 流很小时,电枢反应去磁作用也很小,可认为 ? =常数,根据 T= CT ? I a ,故电磁转矩和电枢 电流成正比, T= f ? I a ? 是通过坐标原点的直线,当负载电流比较大时(本实验电枢电流 Ia=90.122A) ,由于电枢反应的去磁作用增大(近似可看成与负载电流成正比) ,是每极磁通 减少,这是电磁转矩略有减小,这时电磁转矩略有减小,如图中实线所示。22 转矩特性机械特性串电阻调速时,因为负载为恒转矩负载,电枢回路串电阻降低转速后,电机电磁转矩 T= CT ? I a 亦不变,流入电机的电流、电压和输入功率保持不变,则输出功率随之按正比例降 低。6.串电阻调速法优缺点 (1) 由于电阻智能分段调节,因此调速的平滑性比较差。(2) 低速时,调速电阻上有较大电流,损耗大,电机效率低。(3) 轻载时调速范围比较小。(4) 串入电阻阻值越大,机械特性越软,稳定越差。3.4、风机性负载软件调试分析1.仿真结果图:转速波形:23 电枢电流:励磁电流:电磁转矩:10r120rl30rl40rl0.61.65.516K=0.0023T=K/W24 2.图形分析1、调速前,系统工作在固有特性和负载特性的交点上。串入电阻的瞬间,因机械惯性,转 速来不及改变,故转速缓慢下降。2、电枢电路中串入可变电阻 ra 后,电枢电流经 ra 后有电压降,使电机电枢绕组的实际电 压降低,因而也可以达到降低转速的目的从机械特性上看,电机端电压和每极磁通不变,想 空载转速 n0 也不变,而电枢回路的电阻(ra+Ra) ,ra 增加,则机械特性的斜率增加。3、如果端电压不变,If 也不变,当负载电流很小时,电枢反应去磁作用也很小,电磁转矩 T 和电枢电流 Ia 成正比,当负载电流较大时,由于电枢反应的去磁作用增大,使每极磁通 减少,这时电磁转矩略有减少。3.4.2 恒功率负载软件调试分析1.仿真结果:转速波形:25 电枢电流:励磁电流:电磁转矩:26 R1 0.28 K=0.0000012.图形分析:R2 0.18R3 0..002688恒功率负载是指负载转矩 TL 的大小与转速 n 成反比, 而其功率基本维持不变的负载。负载 的恒功率性质应该是就一定的速度变化范围而言的。当速度很低时,受机械强度的限制, TL 不可能无限增大,在低速下转变为恒转矩性质。所以转速无法调到 1000r/s.27 4 结语4.1 结论与讨论本文主要利用 MATLAB 对直流电动机调速进行仿真设计。本文主要研究了对直流电 动机四级串阻起动调速基本方法,主要内容有对额定负载,恒负载,风机性负载运行时直流 电动机四级串阻起动调速的基本原理,在此基础上重点研究了直流电动机调速控制。最后, 通过计算机仿真软件 MATLAB 对系统进行了仿真, 通过对波形的分析验证设计方案 的可行性以及分析了直流电动机调速的特点 通过本次设计,加强了我对知识的掌握,使我对设计过程有了全面地了解。通过学习控制系 统工作原理以及如何利用仿真软件进行仿真,我查阅了大量相关资料,学会了许多知识,培 养了我独立解决问题的能力。同时在对电路设计的过程中,巩固了我的专业课知识,使自己 受益匪浅。总之,通过本次设计不仅进一步强化了专业知识,还掌握了设计系统的方法、步骤等,为今 后的工作和学习打下了坚实的基础。参考文献参考文献 [1] 胡虔生,胡敏强.电机学(第二版)[M].北京:中国电力出版社,2009 [2] 孙亮。MATLAB 语言与控制系统仿真[M].北京工业大学出版社, 200 陈志.电机拖动与控制[M].北京:机械工业出版社,2004 [4]潘晓晨, 郝世勇.MATLAB 点击仿真精华 50 例[M].北京电子工业出版社, 2007 [3] 曹致谢首先我要向张建华老师表示由衷的感谢, 感谢老师在百忙之余抽出时间进行耐心细致 的指导。张老师严谨细致,一丝不苟的作风深深的感染了我。在设计过程中也同样得到了其 他同学的热心帮助,在此向他们表示感谢。由于时间的仓促以及本人能力有限,因此在设计 过程中难免会出现很多错误,对于这些不足与缺陷希望大家理解,并多加批评指正,在此一 并表示感谢!28
【matlab实验报告小结】《MATLAB 及应用》 实验报告实 践 选 题MATLAB 下 Dijstra 算法的实现 专 业 班 级:2010 级信管 1 班 指 导 教 师姓名及 学号周宏宇 吴亮 学号()成 绩 评 定: 成 绩 评 定:安阳师范学院 《MATLAB 及应用》课外实践报告学 号 课程设计 (论 文) 题 目学生姓名吴亮专业10 级信管 1 班MATLAB 下 Dijkstra 算法的实现在掌握 Dijkstra 算法的基础上,综合运用《物流运输与配送》 、 《运筹学》 、 《物流学》等 课程理论知识, 学会利用 MATLAB 软件编制设计程序, 提高理论与实际相结合的应用能力。要求运用节约法进行配送线路设计, 解决课程设计指导书上 3, 计算应用 MATLAB课 程 设 计 ( 论 文 ) 任 务软件。编写设计程序,并调试运行,完成以下任务(1)同组同学每人以一个不同的节点作为出发点手动进行最短路的计算; (2)利用 MATLAB 软件编写程序,以案例 3 的数据作为默认数据对 Dijkstra 算法程序 进行测试; (3)实现输入数据的界面操作; (4)输入起始点和终点能够自动计算最短路径里程及最短路径。完成课程设计说明书。主要内容包括:Dijkstra 算法的原理、程序框图、部分主要程序 及说明、最终结果、结果分析及任务书上要求完成的内容等。指 导 教 师 评 语 及 成 绩成绩:指导教师签字年 月 日1 安阳师范学院《MATLAB 及应用》课外实践报告目录一.设计目的.......................................................................................................................................................3 二.Dijkstra 算法的原理 .....................................................................................................................................3 2.1 两个指定顶点之间的最短路径 ............................................................................................................3 2.2 Dijkstra 算法原理 ...................................................................................................................................3 三.Dijkstra 算法的操作步骤 .............................................................................................................................4 四.Dijkstra 算法的程序框图 .............................................................................................................................4 4.1 菜单程序框图 .........................................................................................................................................4 4.2 输入程序框图 .........................................................................................................................................5 4.3 main 框图................................................................................................................................................6 五.部分主要程序及其说明 ...............................................................................................................................8 5.1 菜单 menu 程序 ......................................................................................................................................8 5.2 原始数据 default_dat 程序 .....................................................................................................................8 5.3 输入数据 input_dat 程序 ........................................................................................................................9 5.4 迪杰斯特拉算法 main 程序 ...................................................................................................................9 六.主要任务..................................................................................................................................................... 11 6.1 最短路的计算 ....................................................................................................................................... 11 6.2 测试.......................................................................................................................................................12 6.2.1 测试 1.........................................................................................................................................12 6.2.2 测试 2.........................................................................................................................................13 6.3 实现输入数据界面 ...............................................................................................................................14 6.4 最短路径求取 .......................................................................................................................................14 参考文献.............................................................................................................................................................152 安阳师范学院《MATLAB 及应用》课外实践报告MATLAB 下 Dijkstra 算法的实现一.设计目的物流运输与配送课程设计是在学生必修的环节。它一方面要求学生在设计中能初步 学会综合运用过去所学的全部知识. 1.培养学生综合运用《物流学》 、 《物流运输与配送》 、 《运筹学》等课程理论知识的能力。2.培养学生初步掌握配送中心选址、配送线路优化的基本方法和基本理论,学会利用 MATLAB 软件进行程序设计,提高理论与实际相结合的应用能力。3.能够进一步强化学生收集整理资料的能力,提高对文献资料的归纳、写作、综合运用 能力。二.Dijkstra 算法的原理2.1 两个指定顶点之间的最短路径问题如下:给出了一个连接若干个客户的道路网络,在这个网络的两个指定客户间,找 一条最短的路线。以各客户为图 G 的顶点,两客户间的直通路为图 G 相应两顶点间的边,得图 G 。对 G 的每一边 e,赋以一个实数 w(e)―直通路的长度,称为 e 的权,得到赋权图 G 。G 的子 图的权是指子图的各边的权和。问题就是求赋权图 G 中指定的两个顶点 u 0 ,v0 间的具最小 权的轨。这条轨叫做 u 0 , v0 间的最短路,它的权叫做 u 0 , v0 间的距离,亦记作 d ? u0 , v0 ? 。求最短路已有成熟的算法:迪克斯特拉(Dijkstra)算法,其基本思想是按距 u 0 从近到远为 顺序,依次求得 u 0 到 G 的各顶点的最短路和距离,直至 v0 (或直至 G 的所有顶点) ,算法 结束。2.2 Dijkstra 算法原理Dijkstra 算法原理[1]:首先,引进一个辅助向量 D,它的每个分量 D 表示当前所找到的从始点 v 到每个终点 vi 的最短路径的长度。如 D[3]=2 表示从始径相对最小长度为 2。这里3 安阳师范学院《MATLAB 及应用》课外实践报告强调相对就是说在算法过程中 D 的值是在不断逼近最终结果但在过程中不一定就等于最短 路径长度。它的初始状态为:若从 v 到 vi 有弧,则 D 为弧上的权值;否则置 D 为∞。显然, 长度为 D ? j ? ? Min { D | vi ∈ V} 的路径就是从 v 出发的长度最短的一条最短路径。此路 则可想而知,这条路径或者是(v, v k ),或者是(v, v j , v k )。它的长度或者是从 v 到 v k 的弧 上的权值,或者是 D ? j ? 和从 v j 到 v k 的弧上的权值之和。一般情况下,假设 S 为已求得最 短路径的终点的集合,则可证明:下一条最短路径(设其终点为 X)或者是弧(v,x),或者是 中间只经过 S 中的顶点而最后到达顶点 X 的路径。因此,下一条长度次短的最短路径的长 度必是 D ? j ? ? Min { D | vi ∈ V-S} 其中, D 或者是弧 ( vk ∈ S)和弧 v k 径为 (v, v j ) 。那么,下一条长度次短的最短路径是哪一条呢?假设该次短路径的终点是 v k ,( , v )上的权值之和。i(v, v )上的权值,或者是 D ?k ?i(1)arcs 表示弧上的权值。若不存在,则置 arcs 为∞。S 为已找到从 v 出发的最短路径 的终点的集合,初始状态为空集。那么,从 v 出发到图上其余各顶点 vi 可能达到的最短路径 长度的初值为 D ? arcs [Locate Vex(G,v),i] vi ∈ V; (2)选择 vj,使得 D ? j ? ? Min { D | vi ∈ V-S}; (3)修改从 v 出发到集合 V-S 上任一顶点 v k 可达的最短路径长度。三.Dijkstra 算法的操作步骤Dijkstra 算法的操作步骤[1]:1.初始时令回路 S ? {V0 } ,T={其余顶点},T 中顶点对应的距离值若存在 V0 ,Vi ,d (V0 ,Vi ) 为 V0 ,Vi 弧上的权值,若不存在 V0 ,Vi , d (V0 ,Vi ) 为 ∞;2.从 T 中选取一个其距离值为最小的顶点 W 且不在 S 中,加入到 S 中; 3. 对 T 中顶点的距离值进行修改:若加进 W 作中间顶点,从 V0 到 Vi 的距离值比不加 W 的路径要短,则修改此距离值; 4. 重复上述步骤 2、3 直到 S 中包含所有顶点,即 S=T 为止。四.Dijkstra 算法的程序框图4.1 菜单程序框图 主菜单的程序是使界面上直接显示所需完成的内容,主要完成默认数据导 入,输入数据,查看数据,求取路径,退出程序的任务,其具体程序的框图如下 图 图1 菜单程序 menu 框图 所示。4 安阳师范学院《MATLAB 及应用》课外实践报告开始输入全局变 量 length,i,jadj_mat=zeros(length); i=1skipNi&length Y i=i+1; j=iskipNj&length Y j=j+1skipNi=jY adj_mat(i,j)=input(‘:’); adj_mat(j,i)=adj_mat(i,j)结束图1 4.2 输入程序框图菜单 menu 程序框图输入程序是为了完成从外界输入数据形成一个新的邻接矩阵, 产生一组新的 数据进行最短路的求解。输入程序框图如下图 所示。图 2 输入 input_dat 程序框图5 安阳师范学院《MATLAB 及应用》课外实践报告开始输入全局变 量 length,i,jadj_mat=zeros(length); i=1skipNi&length Y i=i+1; j=iskipNj&length Y j=j+1skipNi=jY adj_mat(i,j)=input(‘:’); adj_mat(j,i)=adj_mat(i,j)结束图2输入 input_dat 程序框图4.3 main 框图 main 程序是这个系统的主程序,它完成的从任一结点开始到指定的结点为 止的最短路程。main 框图如下图 图3 main 框图 所示。6 安阳师范学院《MATLAB 及应用》课外实践报告开始定义变量m, adj_mat(),i j,lengs,paths, know,sta,dst,k 初始化 变量 know(1)=sta, index=1skipNj&=m Y j=j+1输入k=1skipNlengs(i)+adj_mat(I,j)&lengs(j) YskipNi&=m Y i=i+1lengs(j)=lengs(i)+adj_mat(i,j); Paths(j)=ileng=lengs(dst); k=dst skip Y i=sta N Lengs(i)= adj_mat(sta,i) j=1; path=dst输出lengk=paths(k); path=[k path] skip Y lengs(i)=inf N Paths(i)=sta N paths(k)=sta YskipNpath=[sta path] i&=m Y i=i+1输出path(k)skipYi=sta N min=infskipN结束 j&=m Y j=j+1 Nskiplengs(j)&=min Y k=j;min=lengs(j)图3main 框图7 安阳师范学院《MATLAB 及应用》课外实践报告五.部分主要程序及其说明5.1 菜单 menu 程序 choice = input('欢迎来到 dijkstra 算法求取最短路径系统 \n 请选择:\n1.使用默认 数据 2.输入数据\n3.查看数据 4.求取路径\5.退出程序\n' ); elseif choice == 3 disp(adj_mat); elseif choice == 4 sta = input('请输入起始结点:'); dst = input('请输入目的地:'); if sta == dst fprintf(' else [leng,path] = main program(adj_mat , sta , dst); fprintf(' k = length(path); fprintf('经过路径为:'); for i = 1:1:k-1 fprintf('%d ----&',path(i)); end fprintf('%d\n',path(k)); end end 该段程序完成的是从菜单界面进入程序并选择完成的任务。当输入值为 1 时,程序默认使用原始数据程序即 default_dat,并在界面上输 出默认数据已被启用。当输入值为 2 时,程序调用输入程序即 input_dat。当输入值为 3 时,程序输出数据,并在界面上显示。当输入值为 4 时,程序调用迪杰斯特拉算法程序即 main,并在界面上输入 起始点和目的点,通过 main 的计算,能输出最短路径和经过的路径。当输入值为 5 时,退出程序。5.2 原始数据 default_dat 程序 function adj_mat=default_dat() %定义原始数据函数8\r\n');%d\n',leng); 安阳师范学院 length=10; adj_mat=zeros(length);《MATLAB 及应用》课外实践报告 %定义结点个数 %邻接矩阵adj_mat(1,1)=0;adj_mat(1,2)=8;adj_mat(1,3)=5;adj_mat(1,4)=9;adj_mat(1,5)=12;adj_ mat(1,6)=14;adj_mat(1,7)=12;adj_mat(1,8)=16;adj_mat(1,9)=17;adj_mat(1,10)=22; %原始数据 该段程序通过定义结点个数来确定邻接矩阵的宽度, 并能输入案例上的的数 据,用其来进行测试。5.3 输入数据 input_dat 程序 function adj_mat =input_dat() length = input('请输入节点的数量 '); adj_mat=zeros(length); for i =1:1:length for j =i:1:length if i %定义输入数据函数 %定义结点个数 %定义一个邻接矩阵~= j%输入结点间的距离fprintf('请输入结点%d 到结点%d 的长度(没有则输入 0)',i,j) adj_mat(i,j) = input(':'); if adj_mat(i,j) == 0 adj_mat(i,j) = end adj_mat(j,i) = adj_mat(i,j); 称矩阵 end end end 该段程序完成的是输入数据的过程,通过在界面上输入的结点数,以及从各 结点到其后面的结点之间的距离,在对输入的数据进行对称,使其成为一个完整 的矩阵,为以后的计算做铺垫。5.4 迪杰斯特拉算法 main 程序 [3] m=length(adj_mat); lengs =linspace(0,0,m); for i = 1:1:m9%对称成为一个完整的对%定义 m 的长度 %产生行矢量 安阳师范学院 if i ~= sta lengs(i) = adj_mat(sta,i); if lengs(i) ~= inf paths(i) = end end end %for 循环求起始点到各邻点的距离 index = 1; for i = 1:1:m if i ~= sta min = for j = 1:1:m if lengs(j) &= min k = min = lengs(j); end end《MATLAB 及应用》课外实践报告%标号%让最小值 min 为∞%for 循环求最小值,并将 lengs(j)的值赋给 min,最后确定距起始点最近的点 know(index) = index=index+1; for j = 1:1:m if (lengs(i) + adj_mat(i,j)) & lengs(j) lengs(j) = lengs(i) + adj_mat(i,j); paths(j) = end end %for 循环球最短路并确定结点 end end %循环计算,求取最短路的距离 该段程序是完成 dijkstra 算法的主要程序。在该段程序中先定义一个起点, 再从起点出发将起点的邻接矩阵求出, 并从中找出距离起点最近的点作为下一个 起点,再从该起点出发求其邻接矩阵,找出该邻接矩阵以及上一个邻接矩阵中除10 安阳师范学院《MATLAB 及应用》课外实践报告该点外的其他距离中最小的值所表示的结点作为新的起点,以此类推,直到求到 目的结点为止。如此即可完成 dijkstra 算法,求出从已知起点到目的点的最短距 离及其具体的路径。六.主要任务6.1 最短路的计算选择节点 10 为基点可得:i ? 0 , Vi ? 0 , V j ? ? ,M={1,2,3,4,5,6,7,8,9}V1 ? V10 ? D101 ? 22 ; V2 ? V10 ? D102 ? 22 ; V3 ? V10 ? D103 ? 17 ; V4 ? V10 ? D104 ? 18 ; V5 ? V10 ? D105 ? 15 ; V6 ? V10 ? D106 ? 16 ; V7 ? V10 ? D107 ? 11 ; V8 ? V10 ? D108 ? 11 ; V9 ? V10 ? D109 ? 10 Vmin ? V9 ? 10 , j ? 9 ,即 10 --&9i ? 9 , Vi ? 10 , V j ? ? ,M={1,2,3,4,5,6,7,8,}V1 ? V1 ? D91 ? 10 ? 17 ? 27 V3 ? V1 ? D93 ? 10 ? 12 ? 22 ; V4 ? V1 ? D94 ? 10 ? 15 ? 25 V6 ? V1 ? D96 ? 10 ? 8 ? 18 ;;V2 ? V1 ? D92 ? 10 ? 14 ? 24 V5 ? V1 ? D95 ? 10 ? 15 ? 25;;;V7 ? V1 ? D97 ? 10 ? 6 ? 16 ; V8 ? V1 ? D98 ? 10 ? 11 ? 21 Vmin ? V7 ? 11 , j ? 7 ,即 10 --&7i ? 7 , Vi ? 11 , V j ? ? ,M={1,2,3,4,5,6,8}V1 ? V7 ? D71 ? 11 ? 12 ? 23 V3 ? V7 ? D73 ? 11 ? 7 ? 18 ; V4 ? V7 ? D74 ? 11 ? 10 ? 21 V6 ? V7 ? D76 ? 11 ? 9 ? 20 ; V8 ? V7 ? D78 ? 11 ? 8 ? 19 Vmin ? V8 ? 11 , j ? 8 ,即 10 --&8;V2 ? V7 ? D72 ? 11 ? 11 ? 22 V5 ? V7 ? D75 ? 11 ? 10 ? 21;;;i ? 8 , Vi ? 11 , V j ? ? ,M={1,2,3,4,5,6}V1 ? V8 ? D81 ? 11 ? 16 ? 27 V3 ? V8 ? D83 ? 11 ? 12 ? 23 ;;V2 ? V8 ? D82 ? 11 ? 18 ? 29;V4 ? V8 ? D84 ? 11 ? 7 ? 18 ; V5 ? V8 ? D85 ? 11 ? 6 ? 17 ; V6 ? V8 ? D86 ? 11 ? 14 ? 25 Vmin ? V5 ? 15 , j ? 5 ,即 10 --&5i ? 5 , Vi ? 15 , V j ? ? ,M={1,2,3,4,6}V1 ? V5 ? D51 ? 15 ? 12 ? 27;V2 ? V5 ? D52 ? 15 ? 17 ? 32;11 安阳师范学院《MATLAB 及应用》课外实践报告V3 ? V5 ? D53 ? 15 ? 9 ? 24 ; V4 ? V5 ? D54 ? 15 ? 3 ? 18 ; V6 ? V5 ? D56 ? 15 ? 8 ? 23 Vmin ? V6 ? 16 , j ? 6 ,即 10 --&6i ? 6 , Vi ? 16 , V j ? ? ,M={1,2,3,4}V1 ? V6 ? d61 ? 16 ? 14 ? 30 V3 ? V6 ? d63 ? 16 ? 11 ? 27 ; V4 ? V6 ? d64 ? 16 ? 17 ? 33 Vmin ? V3 ? 17 , j ? 3 ,即 10 --&3;V2 ? V6 ? d62 ? 16 ? 8 ? 24;i ? 3 , Vi ? 17 , V j ? ? ,M={1,2,4}V1 ? V3 ? d31 ? 17 ? 5 ? 22 ; V2 ? V3 ? d32 ? 17 ? 9 ? 26 ; V4 ? V3 ? d34 ? 17 ? 7 ? 24 Vmin ? V4 ? 18 , j ? 4 ,即 10 --&4 或 10 --&8--&4 或 10 --&5--&4i ? 4 , Vi ? 18 , V j ? ? ,M={1,2}V1 ? V4 ? d41 ? 18 ? 9 ? 27 ; V2 ? V4 ? d42 ? 18 ? 15 ? 33 Vmin ? V1 ? 22 , j ? 1 ,即 10 --&1 或 10 --&3--&1i ? 1 , Vi ? 22 , V j ? ? ,M={2}V2 ? V1 ? d12 ? 22 ? 8 ? 30 Vmin ? V2 ? 22 , j ? 2 ,即 10 --&2 或 10 --&7--&2最后得到的具体结果如下所示起点为 10 点,终点为 1 点的最短距离为 22,其路径为 10 --&1 或 10 --&3--&1。起点为 10 点,终点为 2 点的最短距离为 22,其路径为 10 --&2 或 10 --&7--&2。起点为 10 点,终点为 3 点的最短距离为 17,其路径为 10 --&3。起点为 10 点,终点为 4 点的最短距离为 18,其路径为 10 --&4 或 10 --&8--&4 或 10 --&5--&4。起点为 10 点,终点为 5 点的最短距离为 15,其路径为 10 --&5。起点为 10 点,终点为 6 点的最短距离为 16,其路径为 10 --&6。起点为 10 点,终点为 7 点的最短距离为 11,其路径为 10 --&7。起点为 10 点,终点为 8 点的最短距离为 11,其路径为 10 --&8。起点为 10 点,终点为 9 点的最短距离为 10,其路径为 10 --&9。6.2 测试 6.2.1 测试 1以案例 3 的数据作为默认数据对 Dijkstra 算法程序进行测试。现取 10 点为起始点,以 2 点为终点。其手动计算结果为最短路径长度为 22,其路径是 10 --&2。通过 MATLAB 计算12 安阳师范学院得到结果如下图 4 测试结果 1 所示。《MATLAB 及应用》课外实践报告图4 6.2.2 测试 2测试结果 1现取 10 点为起始点,以 8 点为终点。其手动计算结果为最短路径长度为 11,其路径是 10 --&8。通过 MATLAB 计算得到结果如下图 5 测试结果 2 所示。图5测试结果 2通过以上随机取的两组数据,经过 MATLAB 的计算与手动的计算,可以看 出其结果是完全相同的,能够判断出 Dijkstra 程序的准确性。13 安阳师范学院 6.3 实现输入数据界面 进行菜单选择的界面操作如图 6 界面能更直观的让使用者使用。《MATLAB 及应用》课外实践报告菜单选择界面所示。在该界面可以完成使用默认数据,输入数据,查看数据,求取路径和退出程序等功能。而且使用该图6菜单选择界面以下是实现输入数据与查看数据的任务,在该过程中,可以输入结点的数量,并能输 入各结点之间的距离,显示一个对称的矩阵,为以后的求解做准备。其具体的操作步骤如图 7 输入数据 所示。图7 6.4 最短路径求取输入数据该程序可以完成输入起始点和终点能够自动计算最短路径里程及最短路径。现输入 4 个结点,且结点 1 到结点 2 的距离为 2,结点 1 到结点 3 的距离为 4,结点 1 到结点 4 的距离为 5,结点 2 到结点 3 的距离为 6,结点 2 到结点 4 的距离为 2,结点 3 到 结点 4 的距离为 3。现计算结点 1 到结点 4 的距离,其最短路径为 4,路径是 1 --&2--&4。使14 安阳师范学院《MATLAB 及应用》课外实践报告用 MATLAB 程序计算其结果如图 8 求取结果 所示。如图 8 求取结果参考文献 参考文献[1] 赵晓川.物流配送系统规划[M].北京:中国水利水电出版社,2007. [2] 林雪松,周婧,林德新. MATLAB7.0 应用集锦. 北京:机械工业出版社,2005. [3] 代西武. Dijkstra 矩阵算法[D].北京:北京建筑工程学院基础科学部,2007 [4] 张志涌,杨祖樱等.MATLAB 教程 7.0[M].北京:北京航空航天出版社,2005.15}

我要回帖

更多关于 matlab figure 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信