第一篇:matlab实习总结.
MATLAB和Mathematica、Maple并称为三大数学软件。它在数学类科技应用软件中在数值计算方面首屈一指。MATLAB可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连 matlab开发工作界面
接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域。MATLAB的基本数据单位是矩阵,它的指令表达式与数学、工程中常用的形式十分相似,故用MATLAB来解算问题要比用C,FORTRAN等语言完成相同的事情简捷得多,并且MATLAB也吸收了像Maple等软件的优点,使MATLAB成为一个强大的数学软件。在新的版本中也加入了对C,FORTRAN,C++,JAVA的支持。可以直接调用,用户也可以将自己编写的实用程序导入到MATLAB函数库中方便自己以后调用,此外许多的MATLAB爱好者都编写了一些经典的程序,用户可以直接进行下载就可以用
Matlab是一个强大的数学工具,它的应用广泛,涉及到各个领域.它使用起来十分方便,不用麻烦去定义变量.它的绘图能力很强,甚至可以模拟出三维视图.矩阵是它应用的核心,许多工程繁琐的运算都需要靠矩阵来化简,这正是它的生命力所在.但是,他的函数很多,开始学时记的比较痛苦,我已经深深感觉到了.不过看多了也就熟了,感觉和学五笔差不多.它的语法简单,像我学过C语言的学起来还是蛮容易的.它的数组定义十分符合自然,是从1开始的,数组元素的调用也很
接近数学的表达.此外,函数的名字也很符合英文规则,反正我用得很开心就是了.通过学习matlab,我又一次锻炼了自己的思维.它学起来得心应手也让我明白了学习一门语言(c语言对学习其他语言的帮助指导作用.同时,它也加强了我理论联系实际的能力.这是一个专业课的基础工具,学好它是必要的.在第一章中,讲的是一些matlab的入门技术,除了一些基本操作与介绍之外,还初步认识了简单指令的编制,认识了一些matlab 的特殊符号,例如运算用到的加减乘除。(+—*/对我来说还是比较容易上手的。
但在第二章开始,开始有点难度了,在第二章我接触到两种数据类型,一个是double,还有就是char,另外还介绍了赋值语句,数学计算,常用函数,输入输出语句和数据文件。其中让我最容易混淆的就是运算的优先等级,当所需要运算的公式较长时,常常因没有弄好运算优先级而把程序编错,这一章也接触了更多的特殊符号,在多次看书之后,还是顺利把老师所布置的作业完成了。
在第三章中,我接触到基本的matlab选择结构,还有控制这个结构的关系运算符和逻辑运算符。也就是if结构。这个结构对运算起到很大作用,跟elseif配合使用的话,就可以将很图方法。还有,我们学习如何控制画图的附加功能,例如线的宽度和符号的颜色。这些属性可由指定的“propertyname”和值Value决定,“propertyname”和值Value将出现在plot命令的数据后。
在这个学期的学习中,主要还是围绕1到3章学习,学了一些初步的矩阵运算以及画图方法。在书上的练习中也得到了实践,各种矩阵的运算也可以运用到现在所学的电路计算中。活学活用,的确为我们提供了不少的方便。但现今所学到的matlab技术还只是很初步,但是我已经了解到了matlab的实用性,所以还是会在今后继续学习这门课程的。
除此之外还学了利用axis命令的画从这个学期开始,我们学习了一门新课程,开始我对matlab这门课程不是很了解,只知道它是一种计算机程序,可以帮助我们运算处理一些数据,但并不知道这种程序与其他计算机编程程序有什么区别与特点。
通过学习matlab这门课程后,我知道,matlab是一种专业的计算机程序,主要用于工程科学的矩阵数学运算。但在之后的几年里,它又渐渐发展成为一种非常灵活的计算体系,可以解决更多技术上的问题。在解决工程技术问题方面,matlab比其他任何计算机语言都简单高效,对于我们学电气信息工程专业的学生,这门课程给我们日后本专业的工作提供了很大的方便。
第二篇:matlab总结
班级: 学号: 姓名:
Matlab学习综述
MATLAB是一种科学计算软件,专门以矩阵的形式处理数据。MATLAB将高性能的数值计算和强大的数据可视化功能集成在一起,并提供了大量的内置函数,从而被广泛地应用于科学计算、控制系统、信息处理等领域的分析、仿真和设计工作,而且利用MATLAB产品的开放式结构,可以非常容易地对MATLAB的功能进行扩充。
MATLAB产品由若干个模块组成,不同的模块完成不同的功能,其中主要的核心模块有MATLAB、MATLAB Toolboxex、MATLAB Compiler Simulink、Simulink Blocksets、Real-time Workshop(RTW)Stateflow。这些产品大体上可以分为以MATLAB为基础的产品和以Simulink为基础的产品两大分支。其中,MATLAB是MATLAB产品家族的基础,任何其他MATLAB产品产品都以这个模块为基础。MATLAB的桌面应用程序开发工具是以MATLAB Compiler为核心的一组编译工具。Simulink是基于MATLAB的框图设计环境,可以用来对各种动态系统进行建模,分析和仿真,它的建模范围广泛,可以针对任何能够用数字来描述的系统进行建模。
一种完整的计算机应用语言应该提供对数据的描述和对数据的操作。在M语言中,最常用的数据类型表现手段和形式就是变量和常量,由于MATLAB软件自身的特点,它是一种以数值计算为基础的软件,因此M语言的基本处理单位是数值矩阵或者数值向量,在M语言中统一将矩阵或者向量称之为数组,因此掌握一些基本的矩阵、向量和数组操作的基本知识就成为了掌握MATLAB软件的基础。变量和常量是编程语言中类型的表现手段和形式,掌握变量和常量的概念也是掌握M语言编程的基础。所谓变量,就是指在程序运行中需要改变数值的量,每一个变量都具有一个名字,变量将在内存中占据一定的空间,以在程序运行的过程中保存其数值,对变量的命名有相应的要求:变量必须以字母开头,后面可以是字母、数字或者下划线之间的组合。所谓常量就是在程序运行的过程中不需要改变数值的量。
MATLAB专门以矩阵作为基本的运算单位,首先要掌握向量、矩阵、索引和多维数组的概念,以及在MATLAB环境下创建向量、矩阵和多维数组的方法,以及操作矩阵和多维数值的函数的使用方法。
目前的MATLAB版本中不仅有多达十几种的基本数据类型。在不同的专业工具箱中还有特殊的数据类型,并且MATLAB还支持面向对象的编程技术,支持用户自定义的数据类型。获取MATLAB的数据类型可以在MATLAB命令行窗体中键入help datatypes。MATLAB的数据类型包括基本的数值类型,逻辑类型数据、元胞数值、结构和字符串等,需要指出一点,MATLAB的基本数据是双精度数据类型和字符类型。MATLAB提供了完整的编写应用程序的功能,这种能力被称为M语言的高级语言来实现。这种语言是一种解释性语言,利用该语言编写的代码仅能被MATLAB接受,被MATLAB解释执行。其实,一个M语言文件就是由若干MATLAB的命令组合在一起构成的,和C语言类似。M语言文件都是标准的纯文本格式的文件,其文件的扩展名为.m。MATLAB的函数主要有两类,一类被称为内建函数,这类函数是由MATLAB的内核提供的,能够完成基本的运算,例如三角函数、矩阵运算函数等。另外一类函数就是利用高级语言开发的函数文件,这里的函数文件包括用C/FORTRAN语言开发的MEX函数文件,也包括了M函数文件。
M语言文件可以分为两类,其中一类是脚本文件,另一类是函数文件,脚本文件是最简单的一种M语言文件。所谓脚本文件就是由一系列的M语言文件指令和命令组成的纯文本格式的M文件,执行脚本文件时,文件中的指令或者命令按照出现在脚本文件中的顺序依次执行。脚本文件没有输入参数,也没有输出参数,脚本文件处理的数据或者变量必须在MATLAB的公共工作空间中,脚本文件主要是由注视行和代码行组成。
函数文件是M文件最重要的组成部分,M语言函数文件能够接受用户的输入参数,并进行计算,然后将计算结果作为函数的返回值返回给调用者,M函数文件和脚本文件不同,函数文件不仅有自己特殊的文件格式,而且不同的函数还分别具有自己的工作空间,函数文件的输/输出参数不同,这些输入/输出参数在定义的时候不需要指出变量的类型,因为MATLAB默认这些参数都使用双精度类型,这样可以简化程序的编写。M语言的函数文件不仅可以有一个输入参数和一个返回值,还可以为M语言函数文件定义多个输入参数和多个输出参数,同一个M函数文件中可以包含多个函数。如果在同一个M函数文件中包含了多个函数,那么将出现在文件中的第一个M函数称为主函数,其余的函数称为子函数。
经过这么一段时间的学习,对MATLAB有了初步的认识。但是关于它还有很多知识我们所不知道,还有待进一步的学习。以上内容是我对这学期所学课程的总结,可能有些地方总结的不够到位,因为有些地方学习的不够深入,所以,以后要更加努力,在MATLAB的学习上多花一些时间,为以后的学习和工作打下基础。
第三篇:MATLAB总结
目录
一、Matlab相关说明.....................................................................2
二、Matlab操作注意事项..............................................................2
三、Matlab常用代码(图像处理相关)......................................5
四、Matlab常用快捷键.................................................................7
五、Matlab学习心得.....................................................................8
一、Matlab相关说明
Matlab是“Matrix Laboratory”的缩写,意为“矩阵实验室”。MATLAB和Mathematica、Maple并称为三大数学软件。它在数学类科技应用软件中在数值计算方面首屈一指。MATLAB可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域。
MATLAB的基本数据单位是矩阵,它的指令表达式与数学、工程中常用的形式十分相似,故用MATLAB来解算问题要比用C,FORTRAN等语言完成相同的事情简捷得多,并且MATLAB也吸收了像Maple等软件的优点,使MATLAB成为一个强大的数学软件。在新的版本中也加入了对C,FORTRAN,C++,JAVA的支持。
我所使用的Matlab版本是2012a,下文所涉及到图片、专业术语等都是以此版本为基础。
二、Matlab操作注意事项
1.打开并运行一个现存的m文件且这个m文件运行时需用到同一级文件夹中的其他文件,会出现如下提示框:
选择变更文件夹,将当前文件夹变更为这个m文件所在的文件夹。
2.不小心点错或关闭了各种小窗口,将Matlab恢复成默认布局
点击桌面—桌面布局—默认
3.查看某个函数的用法
在命令窗口输入该变量的名称,回车即可。
4.查找某个函数的用法
在命令窗口输入help+函数的名称,回车后会自动显示该函数的相关信息。
5.运行文件后报错 如下图所示,命令窗口中报错的第一段是错误的原因,后面几段会显示发生错误的文件夹以及在该文件夹中的位置。
点击文件的名称,会跳转出一个提示框,上面显示了该文件的具体实现功能,如下图所示。点击文件名后面的行标号,可以直接跳转到发生错误的那一行。
6.如何编辑界面?
修改如图所示的fig文件
1.新建一个GUI文件
2.选择打开现存的GUI文件,点击Open,就可以对当前界面进行编辑了。
7.如何将MAtlab中默认的current folder修改为自己想要的路径,每次启动后都默认是自己 设定的这个路径?
>>右键matlab 快捷方式,属性-快捷方式-起始位置 填入你自己的工作目录。8.把图复制到WORD文件的方法:电机EDIT—>Copy Figure—>Ctrl+V 9.输入时,标点必须是英文状态下的
10.大多数情况下,matlab对空格不予处理
11.小括号代表运算级别,中括号用于生成矩阵,大括号用于构成单元数组
12.分号;的作用:不显示运算结果,但对图形窗口不起作用。分号也用于区分行,13.逗号,的作用:函数参数分隔符,也用于区分行,显示运算结果,当然不加标点也显示运算结果
14.冒号:多用于数组
15.续行号...不能放在等号后面使用,不能放在变量名中间使用,起作用时默认显蓝色 16.双引号'string'是字符串的标识符 17.感叹号!用于调用操作系统运算
18.百分号%是注释号,百分号后面直到行末的语句matlab跳过执行.另外还有一个块注释,即对多行一次注释,会使用到,格式为(注意%{ 和%}都要单独成行)%{ %} 19.矩阵中用圆括号表示下标,单元数组用大括号表示下标
20.对变量名的基本要求:区分大小写,不超过63个字符,以字母开头,只能是字母,数字和下划线
三、Matlab常用代码(图像处理相关)
1.创建一个文件夹 mkdir('D:myData');2.将图片保存到指定的文件夹
image_source=strcat('result',num2str(loop),'.jpg');imwrite(F.cdata,image_source);3.将电影转成图片序列
fnum=size(mov,2);%读取电影的祯数 for i=1:fnum strtemp=strcat('C:UsersAdministratorDesktopparticalfiltermyself粒子滤波',int2str(i),'.jpg');%将每祯转成jpg的图片 imwrite(mov(i).cdata,strtemp,'jpg');end
4、模拟噪声生成函数和预定义滤波器
① imnoise:用于对图像生成模拟噪声,如:
i=imread('104_8.tif');j=imnoise(i,'gaussian',0,0.02);%模拟高斯噪声 ② fspecial:用于产生预定义滤波器,如: h=fspecial('sobel');%sobel水平边缘增强滤波器 h=fspecial('gaussian');%高斯低通滤波器 h=fspecial('laplacian');%拉普拉斯滤波器
h=fspecial('log');%高斯拉普拉斯(LoG)滤波器 h=fspecial('average');%均值滤波器
5、图像文件I/O函数命令
imfinfo 返回图形图像文件信息
语法:info=imfinfo(filename,fmt)info=imfinfo(filename)imread 从图像文件中读取(载入)图像
语法:A=imread(filename,fmt)[X,map]=imread(filename,fmt)[...]=imread(filename)[...]=imread(URL,...)[...]=imread(...,idx)(CUR,ICO,and TIFF only)[...]=imread(...,'frames',idx)(GIF only)[...]=imread(...,ref)(HDF only)[...]=imread(...,'BackgroundColor',BG)(PNG only)[A,map,alpha] =imread(...)(ICO,CUR,PNG only)imwrite 把图像写入(保存)图像文件中
语法:imwrite(A,filename,fmt)imwrite(X,map,filename,fmt)imwrite(...,filename)imwite(...,Param1,Val1,Param2,Val2...)imcrop 剪切图像
语法:I2=imcrop(I)X2=imcrop(X,map)RGB2=imcrop(RGB)I2=imcrop(I,rect)X2=imcrop(RGB,rect)[...]=imcrop(x,y,...)[A,rect]=imcrop(...)[x,y,A,rect]=imcrop(...)
6.impixel 确定像素颜色值
语法:P=impixel(I)P=impixel(X,map)P=impixel(RGB)P=impixel(I,c,r)P=impixel(X,map,c,r)P=impixel(RGB,c,r)[c,r,P]=impixel(...)P=impixel(x,y,I,xi,yi)P=impixel(x,y,RGB,xi,yi)P=impixel(x,y,X,map,xi,yi)[xi,yi,P]=impixel(x,y,...)
7.二进制图像操作函数
applylut 在二进制图像中利用lookup表进行行边沿操作 语法:A=applylut(BW,LUT)bwarea 计算二进制图像对象的面积 语法:total=bwarea(BW)bweuler 计算二进制图像的欧拉数 语法:eul=bweuler(BW)
8.颜色空间转换函数
hsv2rgb 转换HSV值为RGB颜色空间:M=hsv2rgb(H)ntsc2rgb 转换NTSC值为RGB颜色空间:rgbmap=ntsc2rgb(yiqmap)RGB=ntsc2rgb(YIQ)rgb2hsv 转换RGB值为HSV颜色空间:cmap=rgb2hsv(M)rgb2ntsc 转换RGB值为NTSC颜色空间:yiqmap=rgb2ntsc(rgbmap)YIQ=rgb2ntsc(RGB)rgb2ycbcr 转换RGB值为YCbCr颜色空间:ycbcrmap=rgb2ycbcr(rgbmap)YCBCR=rgb2ycbcr(RGB)ycbcr2rgb 转化YCbCr值为RGB颜色空间:rgbmap=ycbcr2rgb(ycbcrmap)RGB=ycbcr2rgb(YCBCR)
9.类型转换函数
im2bw 转换图像为二进制图像
语法:BW=im2bw(I,level)BW=im2bw(X,map,level)BW=im2bw(RGB,level)im2double 转换图像矩阵为双精度型
语法:I2=im2double(I1)RGB2=im2double(RGB1)I=im2double(BW)X2=im2double(X1,'indexed')double 转换数据为双精度型 语法:double(X)unit8、unit16转换数据为8位、16位无符号整型: i=unit8(x)i=unit16(x)im2unit8 转换图像阵列为8位无符号整型
语法:I2=im2unit8(I1)RGB2=im2unit8(RGB1)I=im2unit8(BW)X2=im2unit8(X1,'indexed')im2unit16 转换图像阵列为16位无符号整型
语法:I2=im2unit16(I1)RGB2=im2unit16(RGB1)I=im2unit16(BW)X2=im2unit16(X1,'indexed')
四、Matlab常用快捷键
1.在命令窗口(Command Window)中:
1)【上、下键】――切换到之前、之后的命令,可以重复按多次来达到你想要的命令
2)clc――清除命令窗口显示的语句,此命令并不清空当前工作区的变量,仅仅是把屏幕上显示出来的语句清除掉
3)clear――这个才是清空当前工作区的变量命令,常用语句clear all来完成 4)【Tab】键――在command窗口,输入一个命令的前几个字符,然后按tab键,会弹出前面含这几个字符的所有命令,找到你要的命令,回车,就可以自动完成。目前讨论结果是:matlab6.5版本中,如果候选命令超过100个,则不显示。而在matlab7以后版本中,则没有这个限制,均可正常提示 5)【Ctrl+C】(或【Ctrl+Break】)――在matlab程序运行过程中,可能由于程序编写的失误,导致程序不停的运行,在命令窗口输入“Ctrl+C”可以将运行的程序停下来,而不需要将整个Matlab程序关掉。不过进行此操作的前提是能够激活切换到命令窗口才行。6)edit+函数名 查看或编辑源文件 7)who 显示当前变量名列表 8)whos 显示变量详细列表
9)which+函数名 证实该函数是否在当前路径 10)what 列出当前路径的所有matlab文件 11)load 加载外部文件 12)save 保存文件到外部 13)20.matlab的帮助函数: 14)help 15)help+函数名或help+函数类名 精确查询 16)helpwin 打开帮助窗口 17)helpwin+函数名 精确查询 18)helpdesk 打开帮助窗口 19)doc 打开帮助窗口
20)doc+函数名 打开帮助窗口,精确查询
21)lookfor+关键字 这个是matlab中的谷歌,模糊查询
2.在编辑器(Editor)中: 1)【Tab】(或【Ctrl+]】)――增加缩进(对多行有效)2)3)4)5)6)【Ctrl+[】--减少缩进(对多行有效)
【Ctrl+I】--自动缩进(即自动排版,对多行有效)【Ctrl+R】――注释(对多行有效)【Ctrl+T】――去掉注释(对多行有效)
【Ctrl+B】――括号配对检查(对版本6.5有效,但版本7.0无效,不知道是取消了还是换了另外的快捷键,请大牛们指点,其他版本没有测试过)7)【F12】――设置或取消断点 8)【F5】――运行程序
五、Matlab学习心得
接触Matlab一个多月,从刚开始连最基本的操作都不会,到现在能够熟练地运用Matlab解决问题。虽然现在学到的也只是皮毛而已,离精通还相差甚远,但至少为以后研究生期间的学习打下了良好的基础。下面我就简单的谈一下这一个月来的学习感想。
首先,想要学好Matlab必须有一定数学基础。Matlab软件是与高等数学,计算机科学相结合的软件。所以,当你学习Matlab时,你也得会一定的数学。你要尽量多的熟悉matlab自带的函数,及其作用,因为matlab的自带函数特别多,基本上能够满足一般的数据和矩阵的计算,所以基本上不用你自己编函数。这一点对你的程序非常有帮助,可以使你的程序简单,运行效率高,可以节省很多时间。
其次,要注重基础知识于实际操作结合。你把基本的知识看过之后,就需要找一个实际的程序来动手编一下,不要等所有的知识都学好之后再去编程,你要在编程的过程中学习,程序需要什么知识再去补充。在遇到问题时,不要光看别人如果解决,也不要光想怎么解决,自己坐下来,动手自己解决一下,那你就会把不是你的知识变成自己的知识。
最后,也是最重要的一点就是坚持。MATLAB涉及的领域太多,每个领域里面都缺乏足够的专家分布在你周围。那么我们很难有机会接触到真正的高手,对我们的技术细节一一指点。在遇到实际问题时,就只能靠自己去摸索。常常是再坚持一两个小时,就能够解决你的问题。最大的成就感,就在付出了极大的心血和耐心,才取得一个艰难的小胜利。
第四篇:Matlab实习报告
实验一
仿真条件:电机空载下,输入为阶跃信号,仿真时间为0.4S。
阶跃信号,仿真时间为0.4S。
图二 磁链图
实验结果:开始时有摩擦转矩,在短时间内能够快速形成圆形转矩。
图1 速度响应曲线 实际结果:时间与电机负载转矩为0时的电机响应速度曲线,速度响应误差为0。
仿真条件:电机空载下,输入为
仿真条件:d轴电流设置为0,输入为阶跃信号,电机空载运行响应时间为0.4秒。
图三 速度电流响应曲线
实际结果:在0.02秒时间达到目标转速,iq达到稳定。
实验三
实验目的:验证比列系数对稳态跟踪误差的影响。
仿真条件:修改KVFF为0,KAFF为0,负载为0,KPP为169,KPD为200.8,kpi为0
图四 速度 EP的响应曲线
试验目的:验证比例系数对稳态跟踪误差的关系ESS=V/K稳态跟踪误差越来越小。
仿真条件:修改KVFF为0,KAFF为0,负载为0,KPP为500,KPD为200.8,kpi为0。
图五 速度 EP的响应曲线
试验目的:验证比例系数对稳态跟踪误差的关系。
仿真条件:修改KVFF为0,KAFF为0,负载为0,KPP为5000,KPD为200.8,kpi为0。
图六 速度 EP的响应曲线
实验结果:Ep=V/K,随着K的增加,V不变,EP渐渐减小,前馈=1,完全补偿误差,稳定位置跟踪误差=0.试验目的:修改前馈系数观察稳态跟踪误差关系。
仿真条件:使KVFF为0.5电机负载为0使电机的摩擦系数为0。
图七 速度 EP的响应曲线
试验结论:修改前馈系数观察稳态跟踪误差关系。仿真条件:使KVFF为1电机负载为0使电机的摩擦系数为0。
图八 速度 EP的响应曲线
实验结果:由稳态跟踪误差=速度/比列系数(ess=v/k)得,比列系数越大,速度不变,稳态跟踪误差越大。
实验二
条件:电流给定信号(iq=500HZF方波),Id=0。电机的摩擦系数为无穷大,看Iq的响应波形。
实验结果:电机的摩擦系数为1000时,TL会反向转动。
条件:电流环达到速度环输出,还原参数速度还比列信号改成正弦波,继续增加频率。
正弦波频率为100HZ
正弦波频率为200HZ
正弦波频率为500HZ
正弦波频率为700HZ
实验四
实验条件:建立一个直流电机单速度闭环调节器。
第五篇:matlab实习报告(最新)
1.求f(x)=4x6-x+x3-95在(0,100)上最大值、最小值,根。(使用函数fminbnd、roots)
>>[x,y]=fminbnd('4*x.^6-x+x.^3-95',0,100)x =
0.4432 y =
-95.3258 >> [x,y]=fminbnd('-4*x.^6+x-x.^3+95',0,100)x =
99.9999 y =-4.0000e+012 >> a=[4 0 0 1 0-1-95];roots(a)ans =
1.6860
0.8525 + 1.4852i
0.85251.4514i 求解常微分方程x’’=-x’+x+1,x’(0)=1,x(0)=0(使用函数dsolve)dsolve('D2x=-Dx+x+1','Dx(0)=1','x(0)=0')ans =(5^(1/2)*exp(t*(5^(1/2)/23))/(10*exp(t*(5^(1/2)/2 + 1/2)))1/3 + 1/51/11 +...)其中 n 为函式的输入,级数和 f(n)则是函式的输出。此外,你必须进行下列事项:
function f=pifun(n)l=1;s=0;for i=1:n s=s+l/(2*i-1);l=-l;end s=4*s;disp('f(n)的值是');disp(num2str(s))(1)使用 tic 和 toc 指令来测量 pifun(100000)的计算时间。如果你不知道如何使用这两个指令,请使用 help tic 及 help toc 来查出它们的用法。我的计算机是 Pentium-450,所得的计算时间约为 2 秒。请说明你的计算机规格以及其计算时间。
>> tic,pifun(100000),toc f(n)的值是 3.1416 Elapsed time is 0.028928 seconds.Cpu Pentium dual—core e5300(2)使用 flops 指令来测量 pifun(100000)所用到 floating point operations 的计算次数。如果你不知道如何使用这个指令,请使用 help flops 来查出它的用法。
14、写一个 MATLAB 的递归函式 fibo.m 来计算 Fibonacci 数列,其定义如下:
fibo(n+2)= fibo(n+1)+fibo(n)此数列的启始条件如下: fibo(1)= 0, fibo(2)= 1.function f=fibo(n)if n==1 f=0;elseif n==2 f=1;else f=fibo(n-1)+fibo(n-2);end 求下列函数的极小点:
1)fXx24x29x22x18x;
12312>> f='x(1)^2+4*x(2)^2+9*x(3)^2-2*x(1)+18*x(2)';[x,fm]=fminsearch(f,[0,0,0])x =
1.0000-2.2500 0.0000
fm =
-21.2500
2)
fX2x1; 32x22x1x2x12x22>> f='x(1)^2+3/2*x(2)^2-2*x(1)*x(2)+x(1)-2*x(2)';[x,fm]=fminsearch(f,[0,0])
x =
0.*** 1.***
fm =
-0.***
3)fXx1422.12>> f='(x(1)-1)^4+x(2)^2';>> [x,fm]=fminsearch(f,[0;1])x =
0.***-0.***
fm =
4.24***82e-017
第1),2)题的初始点可任意选取,第3)题的初始点取为X00,1T.5x1x2x31x3xx23416. 解线性方程组 1并求系数矩阵的行列式。
x1x25x432x34x41 a=[5 1-1 0 1;1 0 3-1 2;-1-1 0 5 3;0 0 2 4-1];>> rref(a)
ans =
1.0000
0
0
0
1.4000
0
1.0000
0
0
-5.9000
0
0
1.0000
0
0.1000
0
0
0
1.0000
-0.3000
所以 x1=1.4;x2=-5.9;x3=0.1;x4=-0.3
a=[5 1-1 0;1 0 3-1;-1-1 0 5;0 0 2 4];>> det(a)
ans =
2f17. 设 f(x,y)= 4 sin(x y),求
xy
3x2,y3
syms f s y;syms f x y;f=4*sin(x.^3*y);z=diff(diff(f,x),y);x=2;y=3;subs(z)
>> zs17
ans =
1.0636e+003 18.求方程 3x4+4x3-20x+5 = 0 的所有解。
c=[3 4 0-20 5];roots(c)
>> zs18
ans =
-1.5003 + 1.5470i-1.50031.0860i 1.9536 + 1.0860i 1.0727
r =
8.6397e+003 即在第108年停产可获最大利润,最大利润为8639.7百万元。一幢楼房的后面是一个很大的花园。在花园中紧靠着楼房建有一个温室,温室高10英尺,延伸进花园7尺。清洁工要打扫温室上方的楼房的窗户。他只有借助于梯子,一头放在花园中,一头靠在楼房的墙上,攀援上去进行工作。他只有一架20米长的梯子,你认为他能否成功?能满足要求的梯子的最小长度是多少?
步骤:
1.先进行问题分析,明确问题;
2.建立模型,并运用Matlab函数求解; 3.对结果进行分析说明; 4.line)设计程序画出图形,对问题进行直观的分析和了解(主要用画线函数plot。若梯子能恰好放置,则梯子的长度f与倾角x关系如下:
ab7f(x)
(其中a=m, b=3.048m,0 L=inline('3.048/sin(x)+2.333/cos(x)','x');x=fminbnd(L,0.01,pi/2-0.01)l=subs(L) ezplot('3.048/sin(x)+2.333/cos(x)',[0,pi/2]) 由以上可知梯子的最小长度为7.59m。所以他能成功。 22.某大学青年教师从31岁开始建立自己的养老基金,他把已有的积蓄10000元也一次性地存入,已知月利率为0.001(以复利计),每月存入700元,试问当他60岁退休时,他的退休基金有多少?又若,他退休后每月要从银行提取1000元,试问多少年后他的基金将用完? function f=title22()s=10000;t=0;for i=1:360 s=s*(1+0.001)+700;end fprintf('60ËêÍËÐÝʱÍËÐÝ»ù½ðÓÐ%fÔª.n',s);while s>0 s=(s-1000)*(1+0.001);t=t+1;end t=ceil(t/12); fprintf('ÍËÐݺóÿÔÂÒª´ÓÒøÐÐÌáÈ¡1000Ôª£¬%dÄêºó»ù½ð½«ÓÃÍê.n',t);>> zs22 60岁退休时退休基金有317480.843330元.退休后每月要从银行提取1000元,32年后基金将用完.23.:请设计一个程序,程序完成下列功能:(1)让用户输入一个矩阵A;(2)在A中找出小于0的矩阵元素的位置;(3)在A中统计出等于0的元素的个数;(4)显示A的行数和列数; (5)找出矩阵A各元素中的最大值(显示值,不显示元素位置)。 function f=title20()a=input('ÇëÊäÈë¾ØÕóA: ');[m,n]=size(a);t=0;p=0;for i=1:m for j=1:n if a(i,j)<0 p=p+1; fprintf('µÚ%d¸öСÓÚ0µÄλÖÃÊÇ(%d,%d)n',p,i,j); end if a(i,j)==0 t=t+1; end end end B=a(:);max=B(1);for i=2:m*n if B(i)>max max=B(i); end end if p==0 disp('AÖÐûÓÐСÓÚ0µÄÔªËØ.');end fprintf('AÖеÈÓÚ0µÄÔªËصĸöÊýΪ%dn',t);fprintf('AµÄÐÐÊýºÍÁÐÊý·Ö±ðΪ%d£¬%dn',m,n);fprintf('A¸÷ÔªËØÖеÄ×î´óֵΪ%dn',max); 24:请设计一个程序,程序完成下列功能:(1)让用户依次输入两个字符串s1和s2;(2)比较两个字符串的长度并显示比较结果; (3)判断s1与s2有没有长度在3个字符以上的相同子串,显示判断结果。function f=title24() s1=input('ÇëÊäÈë×Ö·û´®s1: ');s2=input('ÇëÊäÈë×Ö·û´®s2: ');m=length(s1);n=length(s2);t=m;kk=0;if m>n t=n; disp('s1µÄ³¤¶È´óÓÚs2µÄ³¤¶È.');elseif m disp('s1µÄ³¤¶ÈСÓÚs2µÄ³¤¶È.');else disp('s1µÄ³¤¶ÈµÈÓÚs2µÄ³¤¶È.');end for i=4:t for j=1:m-i+1 for k=1:n-i+1 if strcmp(s1(j:j+i-1),s2(k:k+i-1))==1 l=0; for r=1:kk if strcmp(s1(j:j+i-1),b{r})==1 l=1; break;end end if l==0 kk=kk+1; b{kk}=s1(j:j+i-1); end end end end end for i=1:kk fprintf('µÚ%d¸öÏàͬ×Ö·û´®£º',i);disp(b{i}); end 25:编写程序模拟杨氏双缝干涉 两相干光源到接收屏上P点距离r1=(D2+(y-a/2)2)1/2, r2=(D2+(y+a/2)2)1/2,相位差 Φ=2π(r2-r1)/λ,光强I=4I0cos2(Φ/2)编写程序 clear lam=500e-9;a=2e-3;D=1;ym=5*lam*D/a;xs=ym;n=101;ys=linspace(-ym,ym,n);for i=1:n r1=sqrt((ys(i)-a/2).^2+D^2);r2=sqrt((ys(i)+a/2).^2+D^2);phi=2*pi*(r2-r1)./lam;B(i,:)=sum(4*cos(phi/2).^2);end N=255;Br=(B/4.0)*N;subplot(1,2,1);image(xs,ys,Br);colormap(gray(N));subplot(1,2,2);plot(B,ys); 26:编写程序模拟光栅衍射 公式:I=I0(sinα/α)2(sin(λβ)/sinβ)2 α=(πa/λ)sinΦ β=(πd/λ)sinΦ clear lam=500e-9;N=2;a=2e-4;D=5;d=5*a;ym=2*lam*D/a;xs=ym;n=1001;ys=linspace(-ym,ym,n);for i=1:n sinphi=ys(i)/D;alpha=pi*a*sinphi/lam;beta=pi*d*sinphi/lam; B(i,:)=(sin(alpha)./alpha).^2.*(sin(N*beta)./sin(beta)).^2;B1=B/max(B);end NC=255;Br=(B/max(B))*NC;subplot(1,2,1)image(xs,ys,Br);colormap(gray(NC));subplot(1,2,2)plot(B1,ys); 27:绘制三元函数wx2y2z2的可视化图形 x=-5:0.05:5;y=-5:0.05:5;z=-5:0.05:5;[x,y,z]=meshgrid(x,y,z);v=x.^2+y.^2+z.^2;isosurface(x,y,z,v,10);axis equal 28:绘制 zf(x,y)(1x)12ln(xy)的图象 [x,y,z,v] = flow; q=1./sqrt(1-x).*log(x-y)-z; p = patch(isosurface(x, y, z, v, 0));isonormals(x,y,z,q,p) set(p, 'FaceColor', 'blue', 'EdgeColor', 'none');view(3) camlight;lighting 29: 试完成matlab 动画 霓虹灯效果动画:一颗花心: clear;clc;close all c=5;t=linspace(-c,c);[x,y]=meshgrid(t);z=17*x.^2-16*abs(x).*y+17*y.^2-225;pcolor(x,y,z);shading interp pause(2);spinmap(10) 30:试完成matlab gui程序 function varargout = ex0(varargin)gui_Singleton = 1; gui_State = struct('gui_Name', mfilename,...'gui_Singleton', gui_Singleton,...'gui_OpeningFcn', @ex0_OpeningFcn,...'gui_OutputFcn', @ex0_OutputFcn,...'gui_LayoutFcn', [] ,...'gui_Callback', []);if nargin && ischar(varargin{1}) gui_State.gui_Callback = str2func(varargin{1});end if nargout [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});else gui_mainfcn(gui_State, varargin{:});end function ex0_OpeningFcn(hObject, eventdata, handles, varargin) handles.output = hObject; global i a i=0; a=floor(100*rand); guidata(hObject, handles); function varargout = ex0_OutputFcn(hObject, eventdata, handles) varargout{1} = handles.output; function x1_Callback(hObject, eventdata, handles) function x1_CreateFcn(hObject, eventdata, handles) if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor','white');end function x2_Callback(hObject, eventdata, handles) function x2_CreateFcn(hObject, eventdata, handles) if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor','white');end function p1_Callback(hObject, eventdata, handles) global i a x1= eval(get(handles.x1,'String')); if x1>a x2='high'; set(handles.x2,'string',num2str(x2));