MA TLAB 使用中一些需要注意的问题

合集下载

使用MATLAB进行信号处理的注意事项

使用MATLAB进行信号处理的注意事项

使用MATLAB进行信号处理的注意事项引言:MATLAB是一种强大的数学软件,广泛应用于工程、科学研究和数据分析等领域。

在信号处理方面,MATLAB提供了丰富的函数和工具箱,可以帮助我们处理和分析各种类型的信号。

然而,为了确保我们得到准确、可靠的结果,我们需要注意一些事项。

本文将讨论使用MATLAB进行信号处理时的一些重要注意事项。

一、了解信号处理基础知识在使用MATLAB进行信号处理之前,我们需要具备一定的信号处理基础知识。

信号处理涉及到时间域和频域的概念、滤波器设计、谱分析、数字滤波等。

了解这些基本概念和技术将使我们更好地理解MATLAB中的函数和工具箱,并能正确应用它们解决实际问题。

二、正确选取信号处理工具箱或函数MATLAB提供了许多信号处理工具箱和函数,如Signal Processing Toolbox、Filter Design Toolbox等。

在选择工具箱或函数时,我们应根据实际需求和所要处理的信号类型进行评估和比较。

不同工具箱和函数具有不同的优势和适用范围,正确选取将有助于提高处理效果和效率。

三、信号预处理在进行信号处理之前,我们通常需要进行信号预处理。

这包括去噪处理、降采样、滤波器设计等。

去噪处理可以通过MATLAB中的滤波器函数或小波变换等方法实现。

而降采样则可以选择适当的采样率,减少数据量并提高计算效率。

在设计滤波器时,我们需要根据信号的频率特性和要求选择适当的滤波器类型和参数,以达到所需的滤波效果。

四、选择适当的算法和方法在信号处理过程中,我们需要选择适当的算法和方法。

比如,如果要进行频谱分析,可以选择傅里叶变换或小波变换等方法。

而对于时域分析,则可以使用自相关函数或互相关函数等。

MATLAB中提供了许多实现这些算法和方法的函数,我们应根据具体需求和信号类型选择合适的函数进行处理。

五、注意数据类型和精度在使用MATLAB进行信号处理时,我们需要注意数据类型和精度。

MATLAB 中的数据类型包括double、single、int8等,我们可以根据处理需要选择合适的数据类型。

matlabd教学建议

matlabd教学建议

matlabd教学建议。

Matlab在工程以及科研领域广泛地被使用,尤其在科学计算和数据处理方面拥有特殊的作用。

根据matlab的特点,提出了一些matlab教学的建议。

首先,应强调matlab的功能及特点。

无论是学士生还是研究生,都应当对matlab非常熟悉:matlab是一种强大的程序语言,可以构建出复杂的数据处理流程,可以实现快速数
值计算和数据分析,并可以可视化地显示和操纵数据。

为此,学生被教授其如何使用matlab来实现所需的数据处理和计算能力时,应该勤加练习。

其次,学习者应该掌握matlab的基本操作和指令,了解如何执行基本的流程控制,学习其特有的绘图等功能,
并实践使用之,这些都是基本的matlab操作。

此外,能够有效运用matlab是必不可少的,因此学习者应该学会如何自主开发程序,开
发数据处理流程和数值计算等;学会如何操作编辑器来进行程序的编写和更改;学会如何解决不同的计算问题,采用各种matlab特有的计算函数以及常用的数学函数库等;最后,还应学会如何在matlab中实现数据可视化,利用其生动活泼的图像,把研究成果表达出来,将计算结果清晰地呈现,让他人更易读懂。

以上是对matlab的教学建议,希望能够助学生能够更好地掌握matlab,将matlab发挥到一定的程序设计、数学计算以及数据可视化的能力,从而提升其在科学研究以及工程应用
中的能力。

matlab实验报告

matlab实验报告

目录一、基础题 (2)二、绘图题 (3)三、句柄图形和图形用户界面制作 (9)四、Simulink仿真题 (13)五、专题实验总结 (17)六、参考文献 (17)一.基础题实验目的:1、掌握数组的创建和寻访;2、掌握MA TLAB 数组的运算;3、熟悉MA TLAB 关系操作和逻辑操作;4、掌握函数的调用。

实验要求:1、熟练掌握数组运算;2、熟悉MA TLAB 的各种数据类型及函数调用;3、初步了解M 文件及其编写、调试与运行。

实验内容:某公司投资2000万元建成一条生产线。

投产后,在时刻t 的追加成本和追加收益分别为G(t)= (百万元/年), H(t)= (百万元/年)。

试确定该生产线在合适何时停产可获最大利润?最大利润是多少?解:构造函数f(t)=H(t)-G(t)=13-t-3t 2/3=0 ;令t 1/3=x,则f(t)=-t 3-3t 2+13 可得矩阵P=[-1,-3,0,13]求最佳生产时间的源程序如下:p=[-1,-3,0,13]; x=roots(p); t=x.^3运行结果如下: t =3.6768 +21.4316i 3.6768 -21.4316i4.6465考虑到实际情况,显然两个虚数根应该舍掉。

所以将t=4.6425带入,求积分。

代码:t=4.6465; x=0:0.01:t;y=13-x-3*x.^(2/3); trapz(x,y)运行结果: ans =26.32083/225tt ++3/218t-结论:比较以上三组数据,可知最佳生产时间t=4.6465年,可获得的最大收益为 26.3208(百万元/年)。

减去20(百万元)投资,可得最终利润为6.3208(百万元)。

二.作图题实验目的:1、进一步熟悉M 文件调试过程;2、熟练掌握MA TLAB 二维、三维图形的绘制;3、掌握图形的修饰; 实验要求:1、进一步熟悉和掌握MA TLAB 的编程及调试;2、掌握二维、三维图形的绘制;3、掌握图形交互指令的使用;实验内容:1、二维绘图: (1)函数)sin(2x ey x-=,求:a. 绘制[0 ,8]区间内的图形,加注x,y 轴及图形名称;b. 最大值和最小值;c. 零值;求解:a、命令:ezplot('2*exp(-x)*sin(x)',[0,8]) %绘图title(f) , xlabel('x') ,ylabel('y') %加轴名及图名图像:b、先求最小值:从图像上可以看出,在[3,4]之间有最小值,所以命令:[xmin,fmin]=fminbnd(f,3,4)Hold onPlot(xmin,fmin)运行结果:xmin =3.9270 fmin =-0.0279增加一句标注: text(xmin,fmin,'(3.9270,-0.0279)')求最小值求最大值分析:要求最大值,即为求y=-f(x)的最小值,从图像上可以看出,在[0,2]之间有最大值命令:f=inline('-2*exp(-x)*sin(x)') ezplot(f,[0,8][xmin,fmin]=fminbnd(f,0,2) hold onplot(xmin,fmin,'*') Hold onPlot(xmin,fmin)运行结果: xmin = 0.7854 fmin = -0.6448增加标注:text(xmin,fmin,'(0.7854,-0.6448)')(如上图)综上可知:fmax= 0.6448 fmin= -0.0279c 、为了便于观察,首先增加一条直线y=0 命令:hold onezplot('0',[0,8])图像:0123456780.10.20.30.40.50.60.7x2 exp(-x) sin(x)由图像可以看出,在x=0,x=3,x=6附近有零点,所以命令及运行结果如下:fzero(f,0) %求在x=0附近的零点 ans = 0fzero(f,3) %求在x=3附近的零点 ans =3.1416fzero(f,6) %求在x=6附近的零点 ans =6.2832所以零点有三个分别为:x 1=0 x 2=3.1416 x 3=6.2832(2)在同一个画面上建立几个坐标系, 用subplot(m,n,p)命令;把一个画面分成m×n 个图形区域, p 代表当前的区域号,在每个区域中分别画一个图(函数为:;cos sin 2;cos ;sin x x u x z x y ===xxv cos sin =); 命令:>> subplot(2,2,1)>> ezplot('sin(x)',[-2*pi,2*pi]) >> subplot(2,2,2)>> ezplot('cos(x)',[-2*pi,2*pi]) >> subplot(2,2,3)>> ezplot('2*sin(x)*cos(x)',[-2*pi,2*pi]) >> subplot(2,2,4)>> ezplot('sin(x)/cos(x)',[-2*pi,2*pi])图像:2、三维绘图:(1)绘制[-8 8]区间内函数2222)sin(),(yx y x y x f ++=的三维网格曲面图,给该图加上标题;(2)绘制[-8 8]区间内单叶双曲面 125169222=-+z y x 的三维网格曲面图,给该图加上标题;(3) 求函数 f(x,y) = 3x 2+10y 2+3xy-3x +2y 在原点附近的一个极小值点和极小值;作函数 f(x,y)在|x|<2, |y|<1内的图;解:(1)命令:ezsurf('sin(sqrt(x^2+y^2))/sqrt(x^2+y^2)',[-8,8])title('f=sin(sqrt(x^2+y^2))/sqrt(x^2+y^2)')图像:(2)命令:xa=-8:0.2:8; ya=xa;[x,y]=meshgrid(xa,ya); a=3;b=4;c=5;z1=sqrt(c.^2*(x.^2/(a.^2)+y.^2/(b.^2)-1)); z2=-sqrt(c.^2*(x.^2/(a.^2)+y.^2/(b.^2)-1)); surf(x,y,real(z1)) hold on ;surf(x,y,real(z2)) shading interp图像:(3)求极值点命令:>> f=inline('3*x(1)^2+10*x(2)^2+3*x(1)*x(2)-3*x(1)+2*x(2)')f =Inline function:f(x) = 3*x(1)^2+10*x(2)^2+3*x(1)*x(2)-3*x(1)+2*x(2)>> [x,fval]=fminsearch(f,[0,0])运行结果:x = 0.5946 -0.1892fval = -1.0811所以原点附近的极小值点为(0.5946,-0.1892),极小值为:-1.0811 绘图命令:>> x=-2:0.1:2;>> y=-1:0.1:1;>> [xx,yy]=meshgrid(x,y);>> zz=3.*xx.^2+10.*yy.^2+3.*xx.*yy-3.*xx+2.*yy>> surf(xx,yy,zz)图像:三、句柄图形和图形用户界面制作实验目的:1、熟悉句柄图形体系的对象树结构;2、熟练掌握句柄图形体系的对象属性的创建、设置、查询;3、熟练掌握句柄的获取;4、熟练掌握图形用户界面(GUI)的制作;实验要求:1、会获取和显示图形对象的句柄;2、会设置菜单和子菜单;3、会设置用户控件;实验内容:利用底层绘图指令绘制一条余弦曲线。

matlab限制使用技巧

matlab限制使用技巧

matlab限制使用技巧在使用MATLAB时,限制使用技巧可以提高代码的可读性、可维护性和效率。

以下是一些常用的MATLAB限制使用技巧:1. 避免使用全局变量:全局变量会增加代码的复杂性和耦合度。

应该尽量避免使用全局变量,而是使用函数的输入输出参数来传递数据。

2. 合理选择变量名:变量名应该具有描述性,能够反映变量的用途。

避免使用单个字母或者无意义的变量名,这样可以提高代码的可读性。

3. 尽量使用向量化运算:MATLAB是一种适用于科学计算和矩阵运算的语言,因此应尽量使用向量化运算,而不是使用循环来处理数组。

向量化运算能够利用MATLAB的优化功能,提高代码的效率。

4. 避免使用eval和evalc函数:eval和evalc函数可以执行字符串中的MATLAB代码,但是使用这些函数会降低代码的可读性和可维护性。

应该尽量避免使用这些函数,而是使用其他方法来解决问题。

5. 避免使用硬编码的常数:使用硬编码的常数会使代码在修改时变得困难。

应该将常数定义为变量或者使用常数的符号表示,这样可以提高代码的可维护性。

6. 使用函数来封装代码块:如果某个代码块需要被多次使用,应该将其封装成一个函数。

使用函数能够提高代码的重用性和可读性,并且可以减少代码的复制和粘贴。

7. 使用断言进行输入检查:使用断言来检查输入参数的合法性,能够提高代码的健壮性和可靠性。

通过断言,可以在发现错误的时候立即停止代码的执行,并给出相关的错误信息。

8. 使用标准函数和工具箱:MATLAB提供了丰富的标准函数和工具箱,能够方便地实现各种功能。

在编写代码时,应优先使用这些标准函数和工具箱,而不是自己重新实现一些功能。

9. 使用注释来解释代码:在代码中加入注释,能够使代码更易读、更易理解。

应该使用注释来解释代码的逻辑、算法和实现细节,以便他人能够快速理解代码的意图。

10. 及时清理内存:当不再使用某个变量时,应及时清理内存。

可以使用clear函数来清除变量,使用pack函数来整理内存碎片。

MATLAB常见绘图问题及解决方法

MATLAB常见绘图问题及解决方法

MATLAB常见绘图问题及解决方法一、引言MATLAB作为一种强大的科学计算和数据可视化工具,广泛应用于各个领域。

在进行数据分析和可视化过程中,经常会遇到一些绘图问题。

本文将针对一些常见的绘图问题进行探讨,并提供相应的解决方法,帮助读者更好地使用MATLAB进行数据可视化。

二、数据处理与准备在进行绘图前,首先需要对数据进行处理和准备。

常见的问题包括数据清洗、数据类型转换以及数据筛选与排序等。

在MATLAB中,可以使用各种功能强大的函数来解决这些问题。

例如,可以使用"readtable"函数读取Excel中的数据,并使用"table2array"函数将表格转换为数组。

此外,还可以使用"sort"函数对数据进行排序,或者使用"unique"函数去除重复值。

三、基本绘图函数的使用MATLAB提供了丰富的基本绘图函数,如"plot"、"bar"、"scatter"等,可以根据需求选择适合的函数进行绘图。

然而,在使用这些函数时,也会遇到一些常见的问题。

1. 如何设置坐标轴范围在绘制图形时,经常需要设置坐标轴的范围,以确保所展示的数据能够完整显示。

可以使用"xlim"和"ylim"函数来设置x轴和y轴的范围。

例如,使用"xlim([0,10])"将x轴范围设置为0到10。

2. 如何设置坐标轴标题为了使图形更加清晰明了,可以为坐标轴添加标题。

可以使用"xlabel"和"ylabel"函数来设置x轴和y轴的标题。

例如,可以使用"xlabel('时间(s)')"来为x轴添加标题。

3. 如何添加图例在绘图时,可能同时展示多条曲线或者多个数据集,此时需要添加图例以区分不同的曲线或数据。

MATLAB安装问题解决大全

MATLAB安装问题解决大全

MATLAB是由美国mathworks公司发布的主要面对科学计算、可视化和交互式的高科技计算环境。

它将、、科学数据可视化和非动态系统的和仿真等诸多壮大功能集成在一个易于利用的视窗环境中,为科学研究、工程设计和必需进行有效的众多科学提供了一种全面的解决方案,并在专门大程度上摆脱了传统非交互式(如C、Fortran)的编辑模式,代表了现今国际科学计算软件的先进水平。

[2]MATLAB和、、并称为四大软件。

它在类科技应用软件中在方面数一数二。

MATLAB能够进行运算、绘制和数据、实现、创建用户界面、连matlab开发工作界面接其他的程序等,主要应用于工程计算、控制设计、与通信、、、设计与分析等。

MATLAB的大体数据单位是,它的指令与、工程中常常利用的形式十分相似,故用MATLAB来解算问题要比用C,FORTRAN等语言完成相同的情形简捷得多,而且MATLAB也吸收了像Maple等软件的长处,使MATLAB成为一个壮大的。

在新的版本中也加入了对,,,的支持。

能够直接挪用,用户也能够将自己编写的实用程序导入到MATLAB库中方便自己以后挪用,另外许多的MATLAB爱好者都编写了一些经典的程序,用户能够直接进行下载就可以够用1,安装Matlab提示exceptioncalling main解决方式在安装完windows sp3补丁后,很多人发觉matlab2007b无法正常运行,老是启动画面闪一下,然后就没反映了,或有时候弹出exceptioncalling main的系统错误提示。

解决此问题的办法很简单,右键单击matlab程序图标,选择属性,在兼容性选项卡中勾选"用兼容性运行此程序",兼容模式为window NT (service pack 5),肯定后即可恢复正常2,安装时出现红色叉杠并出现英文字母:The installer cannot read file, This is probably due to a CD reader which can only readfiles with an naming convention. Please see the technical supportpage at解决方法:请必然不要用WinRar之类的解压软件来再次解压文件,而是必需要用Daemon Tools一类的虚拟光驱软件来打开!3,输入注册码后出现红色叉杠并出现英文字母:There are no products to install,check that the files are in either the root folder or the‘archives’ folder.解决方法:在我的电脑-右键-属性,在系统属性对话框中选择高级-环境变量-TMP改为C:\Temp ,同时在C的根目录下建立Temp文件夹,问题可以解决。

matlab使用技巧

matlab使用技巧MATLAB是一种强大的科学计算和数据可视化工具,也是工程师和科学家常用的开发环境。

以下是一些MATLAB使用技巧,可以提高效率和编码能力。

1. 使用脚本文件:将MATLAB代码保存在脚本文件中,可以重复执行,方便调试和修改。

使用“Ctrl + Enter”快捷键执行当前光标所在的行。

2. 矩阵运算:MATLAB以矩阵为基础进行计算,可以使用矩阵运算简化代码,例如矩阵相乘使用“*”运算符。

3. 向量化操作:通过向量化操作,可以避免使用循环,提高运算速度。

尽量使用内置的矩阵和向量函数,比如sum、dot、cross等。

4. 调试代码:使用断点直接调试MATLAB代码,可以逐行查看代码执行过程。

点击行号旁边的空白区域设置断点,然后点击运行按钮。

5. 使用工具箱和函数:MATLAB提供了丰富的工具箱和函数库,可以直接调用各种函数进行数据分析、信号处理等。

使用help命令查询函数的帮助信息。

6. 绘图和可视化:MATLAB提供了强大的绘图功能,可以通过绘图工具箱创建高质量的二维和三维图形。

使用plot、scatter、surf等函数绘制图形。

7. 使用脚本自动化任务:可以通过编写MATLAB脚本自动化一些重复性的任务,比如数据处理、图像处理等。

使用for循环和条件语句实现自动化。

8. 脚本向函数的转换:将一段通用的代码封装成函数,可以提高代码的可读性和复用性。

使用function关键字定义函数,输入参数在括号中指定。

9. 高效的数据处理:MATLAB提供了各种数据处理函数,可以进行数据筛选、排序、统计等。

熟悉这些函数,可以快速处理和分析大量的数据。

10. 使用MEX函数优化速度:对于需要高速处理的代码,可以使用MEX函数将MATLAB代码转换为C或C++代码,提高运算速度。

总之,MATLAB是一个功能强大的工具,通过合理运用其函数和工具箱,结合适当的编码技巧,可以更加高效地使用MATLAB进行科学计算和数据可视化。

提高Matlab技术使用效率的技巧

提高Matlab技术使用效率的技巧引言:MATLAB作为一种常用的科学计算和数据分析工具,具有丰富的功能和灵活的编程环境。

然而,在使用过程中,我们需要掌握一些技巧,以提高MATLAB技术的使用效率。

本文将介绍一些实用的技巧,帮助读者更好地应用MATLAB。

一、熟练掌握MATLAB的快捷键MATLAB提供了许多快捷键,可以帮助我们快速完成常见的操作。

熟练掌握这些快捷键,可以大大提高工作效率。

例如,Ctrl+C可以中断正在运行的程序,Ctrl+T可以注释或取消注释一段代码,Ctrl+Enter可以运行选中的代码等等。

了解并使用这些快捷键,可以节省大量的时间和精力。

二、合理利用MATLAB的编辑器功能MATLAB的编辑器提供了许多方便的功能,可以帮助我们更好地编辑和组织代码。

例如,使用Tab键进行缩进,可以使代码结构更加清晰;使用自动补全功能,可以快速输入函数名和变量名;使用断点功能,可以在程序执行过程中暂停并检查变量的值等等。

熟练使用这些编辑器功能,可以提高代码的可读性和可维护性。

三、有效利用MATLAB的帮助文档和在线资源MATLAB提供了完善的帮助文档和在线资源,可以帮助我们解决各种问题。

熟练使用这些资源,可以缩短解决问题的时间,并且可以更好地理解MATLAB的各种功能和命令。

例如,使用help命令可以查看函数的用法和示例;使用doc命令可以打开函数的详细文档;使用MATLAB官方网站和社区论坛,可以找到其他用户的经验和解决方案等等。

掌握这些资源的使用方法,可以使我们更加高效地使用MATLAB。

四、使用MATLAB的向量化操作向量化是MATLAB中的一种重要的优化技巧,可以大大提高代码的运行速度。

通过将循环操作转换为矩阵运算,可以利用MATLAB底层的高效计算库,将计算过程并行化,从而提高运算效率。

例如,使用矩阵乘法代替循环相乘,使用点乘替代循环求和等等。

合理运用向量化操作,可以在不增加代码复杂性的情况下,提高MATLAB程序的性能。

如何调试Matlab程序中的常见错误

如何调试Matlab程序中的常见错误引言Matlab是一种非常强大的数值计算和科学计算软件,具有很多功能和工具箱。

然而,当编写并运行Matlab程序时,常常会遇到一些错误。

本文将重点介绍如何调试Matlab程序中的常见错误,并提供一些实用的技巧和建议。

一、语法错误语法错误是最常见的错误类型之一,它们通常在编译或运行Matlab程序时被检测到。

语法错误的原因可能是拼写错误、缺少分号、括号不匹配等。

当出现语法错误时,Matlab会报告错误的行数和错误的类型。

解决语法错误的方法有:1. 仔细检查代码,确保所有的括号都是成对出现的,并且正确嵌套。

2. 检查是否有未结束的语句,例如缺少分号或结束符号。

3. 使用Matlab的自动缩进功能,使代码更易于阅读和调试。

4. 使用Matlab的语法提示功能,即在输入代码时,Matlab会给出一些可能的选项和建议。

二、运行时错误运行时错误通常发生在程序执行过程中,这些错误可能是由于数据输入错误、变量类型不匹配、除以零等原因造成的。

当出现运行时错误时,Matlab会报告错误的行数和错误的类型。

解决运行时错误的方法有:1. 仔细检查输入数据,确保数据类型符合程序要求,并且没有错误或缺失值。

2. 检查变量的类型是否正确,确保进行操作的变量是正确的类型。

3. 避免除以零的操作,这可能导致运行时错误。

在进行除法操作之前,先检查除数是否为零。

4. 使用Matlab的调试工具,例如断点调试,在程序执行过程中暂停程序,观察变量的值和程序的执行路径,以便找出错误的根源。

三、索引错误索引错误是指在访问矩阵或数组元素时所发生的错误。

这类错误通常是由于索引超出范围或索引不正确导致的。

解决索引错误的方法有:1. 仔细检查索引的范围,确保索引值在矩阵或数组的有效范围内。

2. 检查索引是否从1开始,因为Matlab中的索引是从1开始的,而不是从0开始的。

3. 使用Matlab的内置函数和工具,例如size()函数和length()函数,来获取矩阵和数组的大小和长度,以便正确地进行索引操作。

MATLAB控制系统设计中常见问题与解决方法

MATLAB控制系统设计中常见问题与解决方法控制系统设计在现代工程中起着至关重要的作用,而MATLAB作为一种广泛使用的工具,能够为控制系统设计提供可靠的支持。

然而,在实际应用中,我们常常会遇到一些与MATLAB控制系统设计相关的问题。

本文将探讨一些常见问题,并提供相应的解决方法,以帮助读者更好地应对这些困扰。

一、建模时遇到的问题及解决方法在控制系统设计过程中,建模是至关重要的一步。

然而,由于系统本身的复杂性和不完全性,我们往往会遇到一些问题。

问题一:如何选择合适的数学模型?解决方法:在选择数学模型时,需要考虑系统的特性以及所需的控制策略。

常见的数学模型包括传递函数、状态空间模型等。

可以通过系统的输入输出数据分析来确定最合适的数学模型。

问题二:如何处理非线性系统?解决方法:非线性系统是现实世界中常见的系统。

在处理非线性系统时,可以采用线性化的方法,即在系统的工作点附近进行线性近似,然后应用线性控制理论进行设计。

二、系统响应分析中的问题及解决方法系统的响应分析对于控制系统的性能评估和改进至关重要。

然而,实际中我们常常会遇到以下问题。

问题一:如何计算系统的稳态误差?解决方法:稳态误差是控制系统性能评估中的重要指标。

可以通过计算系统的开环传递函数以及参考输入信号来得到稳态误差的表达式,并根据具体的系统要求进行修正。

问题二:如何分析系统的阻尼比、自然频率等参数?解决方法:可以通过系统的模型转化为标准形式,然后利用MATLAB的工具箱进行频域分析,得到系统的阻尼比、自然频率等参数。

三、控制器设计中的问题及解决方法控制器是控制系统中的关键组成部分,其设计对系统的性能影响很大。

在控制器设计过程中,我们常常会遇到以下问题。

问题一:如何选择合适的控制策略?解决方法:常见的控制策略包括比例控制、积分控制、微分控制等。

选择合适的控制策略需要根据具体的系统特性以及控制要求进行综合考虑。

问题二:如何调节控制器参数?解决方法:对于PID控制器来说,常用的参数调节方法有手动调节法、经验公式法以及自整定法等。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

 第15卷第4期纺织高校基础科学学报Vol.15,No.4 2002年12月BASICSCIENCESJOURNALOFTEXTILEUNIVERSITIESDec.,2002 

3教学研究3

MATLAB使用中一些需要注意的问题胡良剑,孙晓君,叶海平,朱兴龙(东华大学理学院,上海 200051)Ξ

摘要:针对“数学实验”教学实践中学生在使用MATLAB软件时的一些疑难点和容易出现的错误进行了剖析,并指出MATLAB的某些局限性.

关键词:MATLAB;数学实验;教学中图分类号:O1233 文献标识码:A 文章编号:100628341(2002)0420362203

MATLAB是当前科学与工程计算领域使用最为广泛的数学软件[1],也是在“数学实验”教学中普遍使用的软件平台.在近3年的“数学实验”教学中发现许多同学在从C转到MATLAB时常常有一些共同的困难,容易犯出现一些类似的错误.本文中针对这些问题进行了剖析,并指出MATLAB

的某些局限性.

1 M文件及其路径MATLABEditor󰃗Debugger是MATLAB的编程窗口,所编辑的程序扩展名为M,所以称为M文件.M文件分为两类:M脚本和M函数.将多条MATLAB语句写在编辑器中保存在适当的目录中,就得到一个M文件.M函数与M脚本的区别于:(1

)

M函数以function开头;(2)M函数一般有

输入输出参数变量,而脚本不接受输入输出变量;(3

)

M函数中所有变量为局部变量,而M脚本中所

有变量都存在于命令窗口,为全局变量;(4)调用M函数须在MATLAB命令窗口执行文件主名,并给Function的输入变量赋值,而调用M脚本既可在MATLAB命令窗口执行文件主名(无参数),又可在Tools菜单中选Run运行.

使用M文件时应注意以下几个问题:(1)每次修改程序后都要存盘;(2)文件名须用字母开头,

由字母、数字或下划线组成,不要使用空格、减号等.一般取三个字符以上,以防与变量名冲突;(3)调用M函数是以该函数的磁盘文件主名调用,而不是function中的函数名.

MATLAB并不执行任意目录下的M文件,它只执行当前目录和MATLAB路径中的命令和函数.当MATLAB接受到一个命令首先检查是否为命令窗口里的常量或变量,然后检查当前工作目录M文件名,再依次按路径队列搜索,排在后面的同名M文件得不到执行.使用工具栏里的路径浏览器(PathBrowser)

可查看到搜索路径队列,也可改变当前工作目录或在搜索路径中添加新目录

.

对于使用公共计算机的读者,建议设置你自己的工作目录(如软盘a:).每次进入MATLAB,使用路径浏览器将你的工作目录设置为当前目录,你编写的程序都保存于此目录,就不会与别人的程序冲突了.同学们常常困惑编写的M文件无法执行或对M文件的修改不起作用,往往是由于修改程序

Ξ收稿日期:2002205208

作者简介:胡良剑(19652),男,安徽省泾县人,东华大学理学院副教授,主要从事应用数学和教学工作方面的研究.后没有存盘,或者你文件保存的目录不在搜索路径中.你所正在执行的M文件的位置可用which查到,并可用type显示文件内容.

2 数据、命令和图形的保存及调用当退出MATLAB时,命令窗口中变量不复存在.为了保留变量值,在退出之前可用命令save将变量连同它的值用二进制方式存储在数据文件中,其扩展名为MAT.MAT文件是不可读的,需要时可用命令load调用.为了与其它应用程序交换数据,save和load提供了保存及调用可读的ASCII码数据文件的选项(详见save和load的帮助信息).MATLAB还允许使用C语言读写命令fprintf,fs2

canf,fopen,fread等来传递格式化数据文件,其使用格式与C语言基本一致.菜单File󰃗Saveworkspaceas的功能与命令save等价.

需要注意的是,命令save只能保存变量和数据,不能保存命令行.可使用↑↓键来调用和编辑前面的命令行.有些同学喜欢用剪贴板来复制和粘贴前面的命令行,这在MATLAB5.3以下版本中常导致错误,如果你想搞明白原因,请将其粘贴到编程窗口,就会发现每行前面有一个提示符“》”,而这个提示符在命令窗口是看不见的.MATLAB6.0以上版本已弥补了这一缺陷.保存命令行的标准方式是在编程窗口用程序M文件实现.

在图形窗口使用File󰃗saveas可将当前图形保存为fig文件或M文件,但这个图形只能在MATLAB环境打开,使用File󰃗Export可将当前图形保存为通用的jpg文件或bmp文件等.保存图形最常用的方法是利用图形窗口菜单Edit󰃗Copyfigure将其作为图片剪贴到Word或其它应用程序中.

3 数组化编程MATLAB基本数据单元是无需指定维数的矩阵(即二维数组),所以其程序设计的基本特点是数组化.例如,矩阵A与B的乘法运算在C语言中需要对A与B的元素用两重for循环实现,而在MATLAB可简单使用A3B实现.好的M文件应尽量使用内部函数(包括关系与逻辑函数any,all,find等),少用循环语句,这样不仅可使MATLAB程序简洁,而且可提高运算速度.有人认为,MAT2LAB编程水平与程序中for的个数成反比.

点运算是MATLAB中特殊定义的一种运算,包括点乘.3,点右除.󰃗,点左除.󰃙,点乘方.^等,

这些运算的定义为实现数组化编程带来很大方便,尤其在作图中经常使用.使用时要注意它们与矩阵乘3,矩阵右除󰃗,矩阵左除󰃙,矩阵乘方^的区别.一言以蔽之,点运算就是对应元素的运算,什么时候该用矩阵运算,什么时候该用点运算,不能一概而论,要根据需要来定.加法,减法和数乘没有点运算,

因为它们本身就是对应元素的运算.在数值积分quad8等命令使用时,被积函数常用点运算,即使函数内部没有错误,执行积分时可能出错,因为quad8处理对象为向量.

一些多元函数运算命令,如fsolve,fmins,fmincon等,操作多元函数的自变量需用一个统一的向量变量来表示,需将自变量x,y,z改写为x(1),x(2),x(3)

.另外,如果你将函数用字符串的形式直接

写在命令中,自变量名必须是x,而不能是其它字母.但如果你用M函数来表达这个多元函数,自变量向量可用任意变量名.

MATLAB数组下标编址具有明确的含义,如A(2,3)是矩阵A的第2行第3列.因此其编址是从1开始,决不能用0.习惯使用C的读者要特别注意.

4 关于符号数学工具箱符号数学工具箱(ExtendedSymbolicMath)是MATLAB一个特殊的工具箱,可进行解析数学

运算(如因式分解,求不定积分等)和任意指定精度数值计算(比如200位有效数字),这在普通高级程序设计语言中是难以想象的.符号运算使用一种特殊的数据类型,称为符号对象(SymbolicObject)

,

用字符串形式表示,但它又不同于普通字符串(CharArray).符号对象需预先使用sym或syms定

363第4期 MATLAB使用中一些需要注意的问题义,其运算结果也为符号对象.符号对象占用字节数远大于数值或字符,同时其运算速度也慢许多,所以通常符号命令只作为“符号计算器”作解析运算,具有较大的局限性,数值计算一般不提倡用符号命令.

符号运算接受两种使用方式,第一种是符号变量表达式,这种方式需要预先对符号变量进行定义;第二种是字符串方式,无须预先对符号变量进行定义,而是直接将表达式用单引号直接写在命令中.例如为解方程x3-x-1=0.符号变量方式命令为symsx;x=solve(x^3-x-1),x=vpa(x,6)字符串方式命令为x=solve(‘x^3-x-1’),x=vpa(x,6) 符号变量方式比较清楚,较少歧义,故推荐作用.但是解微分方程命令dsolve只能接受字符串方式,应特别注意.

另外,许多符号运算命令是非向量的,当它们用于解决多元问题时,其解为一个结构.例如,为解微分方程组x’=x+y,y’=-x+y,x(0)=1,y(0)=2.

使用s=dsolve(‘Dx=x+y’,‘Dy=-x+y’,‘x(0)=1’,‘y(0)=2’)结果需用下列命令方可看出s.x,s.y

5 MATLAB的一些局限性像其它计算机软件一样,MATLAB也具有一定的局限性,它的许多数值计算命令都有一定适用性范围.例如,由于解方程命令fzero使用二分法,它只能求变号的根,fsolve也只能求实根.MAT2

LAB的二重积分计算命令只能求矩形域上的积分.MATLAB还缺少整数规划、图论等计算工具.文献[2]提供了这方面的一些补充工具.

另外,由于数值计算的特点,某些运算难免会出现一些假奇异和假收敛现象.下列求解问题,

MATLAB软件均会得出错误结果.

(1)用

fzero解方程

(x-1)

2

=0;

(2)用

fsolve解方程x2+x+1=0;

(3)用quad计算积分

∫8

0󰃜sin(x)󰃜dx;

(4)计算积分∫1-1x2cos(x)dx

.

由于数值计算问题固有的复杂性,不可能指望有一个万能的软件.对于计算机的运算结果,要有一个清醒的认识,不要完全相信计算机!理解这一点,对于正确处理人与机器的关系,正确使用计算机是必要的.

参考文献:

[1] 薛定宇.科学计算语言MATLAB5.3程序设计与应用[M].北京:清华大学出版社,2000.1512216.[2] 胡良剑,丁晓东,孙晓君.数学实验——使用MATLAB[M].上海:上海科学技术出版社,2001.572192.

463 纺 织 高 校 基 础 科 学 学 报 第15卷

相关文档
最新文档