当前位置:文档之家› 自动化软件工具MATLAB自学课件 第4章 MATLAB程序设计及应用实例

自动化软件工具MATLAB自学课件 第4章 MATLAB程序设计及应用实例

Matlab程序设计教程第二版刘卫国课后参考答案(供参考)

第二章 1 求下列表达式的值。 (1) w=sqrt(2)*(1+0.34245*10^(-6)) (2) a=3.5; b=5; c=-9.8; x=(2*pi*a+(b+c)/(pi+a*b*c)-exp(2))/tan(b+c)+a (3) a=3.32; b=-7.9; y=2*pi*a^(2)*[(1-pi/4)*b-(0.8333-pi/4)*a] (4) t=[2,1-3*i;5,-0.65]; z=1/2*exp(2*t)*log(t+sqrt(1+t^(2))) 2 求下列表达式 A=[-1,5,-4;0,7,8;3,61,7]; B=[8,3,-1;2,5,3;-3,2,0]; (1) A+6*B A^2-B+eye (2) A*B A.*B B.*A (3) A/B B\A (4) [A,B] [A([1,3],:);B^2] 3 根据已知,完成下列操作 (1) A=[23,10,-0.778,0;41,-45,65,5;32,5,0,32;6,-9.54,54,3.14]; K=find(A>10&A<25); A(K) (2) A=[23,10,-0.778,0;41,-45,65,5;32,5,0,32;6,-9.54,54,3.14]; B=A(1:3,:) C=A(:,1:2) D=A(2:4,3:4) E=B*C (3) E

2 用if语句 score=input('请输入成绩:'); if score>=90&&score<=100 disp('A'); elseif score>=80&&score<=89 disp('B'); elseif score>=70&&score<=79 disp('C'); elseif score>=60&&score<=69; disp('D'); elseif score<60&&score>=0; disp('E'); else disp('出错'); end 用switch语句 score=input('请输入成绩:'); switch fix(score/10) case {9,10} disp('A'); case {8} disp('B'); case {7} disp('C'); case {6} disp('D'); case {0,1,2,3,4,5} disp('E'); otherwise disp('出错'); end 第四章1题 1) X=0:10; Y=x-x.^3/6; P lot(x,y) 2) t=0:0.01:2*pi; x=8.*cos(t); y=4*sqrt(2).*sin(t); plot(x,y) 2题

matlab心得与学习方法(也许这是个大牛写的)

发现现在很多人(找工作的或者读博的)都想要学习或者正在学习Matlab,问我要怎么学习。其实我虽然写Matlab代码的经验还算丰富,但是还不能说是一个很好的Matlab编程人员,这里有一些心得,分享给大家希望对大家有所帮助。 关于如何学习Matlab 我的学习方法很简单:Matlab是练出来的,而不是看出来的。很多人问我有没有比较好的Matlab教材,我说随便找一本吧,都可以。只要书里面有最基本的语法和命令,对于一个有编程基础的人,Matlab可以在一个下午的时间内学会。当然,仅仅是学会。如果想要对Matlab比较得心应手,那么最好的办法就是练习。练习的素材很多,比如对于学经济学的,可以做一些simulation之类的,也可以试着把计量或者宏观教材里面的一些算法写写出来。一开始可能很慢,但是当你完成了一个比较大的project的时候,你的Matlab的功力将会有巨大的提升。 当然,在你写程序之前,多读一些别人写的好的code是非常有帮助的。 一些Matlab的经验 1、适当了解一些数值计算、数值分析以及最优化的理论 用Matlab的无非是做数值计算或者最优化,这也是Matlab的强项,Matlab有足够多的工具箱解决这些问题。但是在使用这些工具箱之前,应该首先了解一些数值计算以及最优化的理论。这一点在程序碰到问题或者计算结果不理想的时候尤为重要。很多时候结果不理想并不是自己的理论出了问题,而是盲目或者错误使用Matlab的工具箱而导致的。比如我曾经做过一个单纯形法的优化程序,但是结果总是不理想,这个时候就要返回到单纯形法具体是一种什么样的算法来考虑这个问题,最后发现是由于目标函数的某一部分十分平缓导致的。 当然更重要的是如果你不理解理论,很多问题根本不知道如何处理。有个学化学同学就曾问我一个程序怎么写,说matlab肯定可以完成的。了解清楚之后才明白原来他想做的就是一个受限最小二乘。但是他不懂得什么是最小二乘(因为没怎么学过数学),当然面对这个问题无从下手。 2、理解Matlab中时间空间的转化 这个问题没有人强调,但我觉着蛮重要。这里的关键点其实很简单,就是尽量减少重复计算,哪怕是多项式复杂度以内的计算。重复计算的内容应该适时保存到内存中,以后直接调用。一个程序可能会重复运行几千次几万次,一点点的浪费时间都可能被放大很多。空间(内存)我们是可以扩充的,但是时间不是,所以绝大多数时候我们需要放弃空间,获得时间上的迅捷。 这里有个故事,曾经在某技术论坛上看到的,说腾讯公司早期做的QQ实在太过垃圾,他们追踪过QQ的行为,发现在几分钟时间里重复调用了某同一注册表项几百次。显然注册表的

(完整版)BP神经网络matlab实例(简单而经典).doc

p=p1';t=t1'; [pn,minp,maxp,tn,mint,maxt]=premnmx(p,t); % 原始数据归一化 net=newff(minmax(pn),[5,1],{'tansig','purelin'},'traingdx'); %设置网络,建立相应的BP 网络net.trainParam.show=2000; % 训练网络 net.trainParam.lr=0.01; net.trainParam.epochs=100000; net.trainParam.goal=1e-5; [net,tr]=train(net ,pn,tn); %调用TRAINGDM 算法训练BP 网络 pnew=pnew1'; pnewn=tramnmx(pnew,minp,maxp); anewn=sim(net,pnewn); anew=postmnmx(anewn,mint,maxt); %对 BP 网络进行仿真%还原数据 y=anew'; 1、 BP 网络构建 (1)生成 BP 网络 net newff ( PR,[ S1 S2...SNl],{ TF1 TF 2...TFNl }, BTF , BLF , PF ) PR :由R 维的输入样本最小最大值构成的R 2 维矩阵。 [ S1 S2...SNl] :各层的神经元个数。 {TF 1 TF 2...TFNl } :各层的神经元传递函数。 BTF :训练用函数的名称。 (2)网络训练 [ net,tr ,Y, E, Pf , Af ] train (net, P, T , Pi , Ai ,VV , TV ) (3)网络仿真 [Y, Pf , Af , E, perf ] sim(net, P, Pi , Ai ,T ) {'tansig','purelin'},'trainrp' BP 网络的训练函数 训练方法 梯度下降法 有动量的梯度下降法 自适应 lr 梯度下降法 自适应 lr 动量梯度下降法弹性梯度下降法训练函数traingd traingdm traingda traingdx trainrp Fletcher-Reeves 共轭梯度法traincgf Ploak-Ribiere 共轭梯度法traincgp

MATLAB学习知识重点

1,计算矩阵的特征值和特征向量 【V,D 】=eig (A ) 其中A 指的是矩阵 V 指的是特征向量组成的矩阵 D 指的是特征值所组成的矩阵 A=[0 1 0;1 0 1;0 1 0]; >> [V,D]=eig(A) V = 0.5000 -0.7071 0.5000 -0.7071 0.0000 0.7071 0.5000 0.7071 0.5000 D = -1.4142 0 0 0 -0.0000 0 0 0 1.4142 2,求线性方程的解 1231231232314354578950x x x x x x x x x ++=-+=++= 这是一个非齐次方程方程,对于线性代数来讲,很难求解,但是利用MATLAB 来求 A=[1 2 3;3 -5 4;7 8 9]; 1 B=[14 5 50]; 2 x=A\B 3 B=[14;5;50]; 4 这4个语句的区别,特别是2.3两句的区别,2语句中B 表示的是1行3列,但是4语句中的表示的3行1列。 同时,X=A\B 很X=A/B 也是很有能区别的,具体的区别如下: X=A\B 表示的是A*X=B 的解 X=A/B 表示的是X*A=B 的解,在这里,具体解释如下;A*X=B ,

在线性代数中,X=A^(-1)B ,所以X=A\B。X*A=B的解为X=BA^(-1),就是X=B/A。 3,一元方程求根 这个在计算中是个难题,一元多次方程式很难求解的,对于纯粹的手工计算来说,所以有MATLAB比较方便,具体语句如下:()23 1.350.6680.4360.69552 =+++ f x x x x P=[0.69552 0.436 0.668 1.35]; >> X=roots(P) X = 0.2817 + 1.2456i 0.2817 - 1.2456i -1.1902 + 0.0000i 对于这个方程来说,要注意的是,在构成向量时,一定要从告辞往低次排列,中间缺少次数的,用0代替,求解语句是roots(P)。4,图形处理功能 A, 可以绘制函数图像,具体的语句如下: >> x=linspace(0,6); 这个表示X轴,在0到6内取100个点,这是默认的数值100。当然还有可以设定数值的方法linspace(0,6,100)表示的是在0到6内取等间隔取100个点。 >> y1=sin(2.*x); >> plot(x,y1)这是绘制函数sin(2X)的图像,在这里要注意的,

关于matlab的学习论文

浅 议 Matlab 的 功 能 和 应 用 姓名:李丛 学号:20087101038 班级:08级计算机本科班

浅议matlab的功能和应用 【本文摘要】Matlab是功能强大的工程计算和数据处理、分析软件,为科学工作者带来了极大的便利。本文介绍了MATLAB的发展历程和影响,并重点介绍了MA TLAB的功能和作用,以及其在工作的运用。 【关键词】Matlab 数据处理 一、MATLAB 的简介 MATLAB是“Matrix Laboratory”的缩写,意为“矩阵实验室”,是当今美国很流行的科学计算软件.信息技术、计算机技术发展到今天,科学计算在各个领域得到了广泛的应用.在许多诸如控制论、时间序列分析、系统仿真、图像信号处理等方面产生了大量的矩阵及其相应的计算问题.自己去编写大量的繁复的计算程序,不仅会消耗大量的时间和精力,减缓工作进程,而且往往质量不高.美国Mathwork软件公司推出的MATLAB软件就是为了给人们提供一个方便的数值计算平台而设计的. MATLAB是一个交互式的系统,它的基本运算单元是不需指定维数的矩阵,按照IEEE的数值计算标准(能正确处理无穷数Inf(Infinity)、无定义数 NaN(not-a-number)及其运算)进行计算.系统提供了大量的矩阵及其它运算函数,可以方便地进行一些很复杂的计算,而且运算效率极高.MATLAB命令和数学中的符号、公式非常接近,可读性强,容易掌握,还可利用它所提供的编程语言进行编程完成特定的工作.除基本部分外,MATLAB还根据各专门领域中的特殊需要提供了许多可选的工具箱,如应用于自动控制领域的Control System工具箱和神经网络中Neural Network工具箱等。 二、MATLAB的基本功能 MATLAB是由美国mathworks公司发布的主要面对科学计算、可视化以及交互式程序设计的高科技计算环境。它将数值分析、矩阵计算、科学数据可视化以及非线性动态系统的建模和仿真等诸多强大功能集成在一个易于使用的视窗环境中,为科学研究、工程设计以及必须进行有效数值计算的众多科学领域提供了一种全面的解决方案,并在很大程度上摆脱了传统非交互式程序设计语言(如C、Fortran)的编辑模式,代表了当今国际科学计算软件的先进水平。 MATLAB和Mathematica、Maple并称为三大数学软件。它在数学类科技应用软件中在数值计算方面首屈一指。MATLAB可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连 matlab开发工作界面接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域。 MATLAB的基本数据单位是矩阵,它的指令表达式与数学、工程中常用的形式十分相似,故用MATLAB来解算问题要比用C,FORTRAN等语言完成相同的事情简捷得多,并且mathwork也吸收了像Maple等软件的优点,使MATLAB成为一个强大的数学软件。在新的版本中也加入了对C,FORTRAN,C++ ,JAVA的支持。可以直接调用,用户也可以将自己编写的

学习matlab的吐血经验

经验之一: Matlab函数句柄、feval函数和inline函数的使用 MATLAB函数句柄 函数句柄(Function handle)是MATLAB的一种数据类型。 包含了函数的路径、函数名、类型以及可能存在的重载方法; 引入函数句柄是为了使feval及借助于它的泛函指令工作更可靠;使“函数调用”像“变量调用”一样方便灵活;提高函数调用速度,特别在反复调用情况下更显效率;提高软件重用性,扩大子函数和私用函数的可调用范围;迅速获得同名重载函数的位置、类型信息。 -------------------------------------- 可以与变量一样方便地使用:比如说,在现在这个目录运行时,创建了本目录一个函数的句柄,当转到其他目录时,可以通过函数句柄直接调用上一个目录的函数,而不需要把那个函数文件复制过来,因为创建的函数句柄中已经包含了路径信息; 提高函数调用速度:因为matlab对函数的调用每次都是要搜索所有的路径,从set path 中可以看到,路径是非常的多的,所以如果一个函数在程序中需要经常用到的话,使用函数句柄,对速度会有提高的; -------------------------------------- MATLAB中函数句柄的使用使得函数也可以成为输入变量,并且能很方便的调用,提高函数的可用性和独立性。 函数句柄实际上提供了一种间接调用函数的方法。 创建函数句柄需要用到操作符@ 创建函数句柄的语法: fhandle = @function_filename 调用函数时就可以调用该句柄,可以实现同样的功能。 例如fhandle = @sin就创建了sin的句柄,输入fhandle(x)其实就是sin(x)的功能。 如 % % ------------------------------------------------ fhandle=@sin fhandle(pi)

经典GUI基础入门:MATLAB中GUI用户图形界面学习

GUI指导教程系列(1):GUI入门基本操作 为什么在MATLAB中要使用GUI呢?其实GUI就是Matlab中的Visual Basic,是面向对象的编程,可以使Matlab程序的终端用户,即使不懂的Matlab也可以轻易操作该程序! 如果没有图形用户界面(GUI)我们只能从命令行(Command Window)中调用相关程序,这相对比较繁琐,并且不是所有用户都是这个能力。就好比计算机的DOS 系统,在有windows的情况下,您会选择DOS吗?当然我们也不排除骨灰级的人物! 在本节教程我们主要针对没有GUI创建和使用经历的网友,但是必要的MATLAB 基础知识是需要的。在教程中我们将创建一个简单的GUI程序,它执行两个数的加法运行,然后显示其运算结果。 好下面开始我们的教程! 一、打开和创建GUI界面 1、首先打开Matlab,在Command Window中输入guide回车 2、此时打开GUI编辑器GUIDE(GUI Developer的缩写) 2.1 界面上有两个标签也“Creat New GUI”和“Open Existing GUI” 如果创建新的GUI此时我们选择第一个标签页,但如果打开其它已经存在的GUI 就点击第二个标签吧

2.2 这里我们选择第一个标签下的“Blank GUI”(空白GUI),下面还有几个系统GUI模版,你可以根据需要选择其它的。 2.3 点击“OK”我们正式进入GUIDE界面,呵呵,是不是感觉似曾相识 3、添加你需要的控件到figure中 在添加控件之前,您最好对您的GUI界面布局已经有一定的构思了,否则盲目性太大了不利于您的编程。下面是我们构思的布局。

(完整版)Matlab学习系列15.数值计算—高数篇

15. 数值计算—高数篇 一、求极限 limit(f,x,a)——求极限 lim ()x a f x → limit(f,x,a,'right')——求右极限 lim ()x a f x +→ limit(f,x,a,'left')——求左极限 lim ()x a f x -→ 例1 求 2352 lim sin 53x x x x →∞++ 代码: syms x; y=(3*x^2+5)/(5*x+3)*sin(2/x); limit(y,x,inf) 运行结果:ans = 6/5 注:Matlab 求二元函数的极限,是用嵌套limit 函数实现的,相当于求的是累次极限,需要注意:有时候累次极限并不等于极限。 例2 求 30 lim 2x x x x a b +→?? + ??? 代码: syms x a b; y=((a^x+b^x)/2)^(3/x); limit(y,x,0,'right') 运行结果:ans = a^(3/2)*b^(3/2) 二、求导 diff(f,x,n)——求函数f 关于x 的n 阶导数,默认n=1

例3 求1sin 1cos x y x += +的1阶导数,并绘图 代码: syms x a b; y=((a^x+b^x)/2)^(3/x); limit(y,x,0,'right') 运行结果: y1 = cos(x)/(cos(x) + 1) + (sin(x)*(sin(x) + 1))/(cos(x) + 1)^2 例4 设sin xy z e =,求2,,z z z x y x y ??????? 代码: syms x y; z=exp(sin(x*y)); zx=diff(z,x) zy=diff(z,y) zxy=diff(zx,y) % 也等于diff(zy,x) -5 5 5 10 15 20 25 x (sin(x) + 1)/(cos(x) + 1) -5 05 -20 -15 -10-5 05 10 1520 25x cos(x)/(cos(x) + 1) + (sin(x) (sin(x) + 1))/(cos(x) + 1) 2

(完整版)matlab课程学习总结

目录 VC++ & Matlab 混合编程的快速实现 (2) 摘要 (2) 关键词 (2) 简介: (2) 实例分析 (3) 1、编写Matlab函数 (3) 2、Matlab6.5编译器设置 (3) 3、建立C++控制台工程 (5) 4、启用Matlab Add-in 工具条 (6) 5、VC++6.0环境及工程设置 (7) 6、Matlab到C++的代码转换 (10) 7、C++函数的使用 (11) 特别说明一: (12) 特别说明二: (13) 8、程序的发布 (13) 总结 (13)

VC++ & Matlab 混合编程的快速实现摘要: 许多工程软件需要用到复杂的数学算法。VC++能够形成各种用户界面,并可以直接与系统及底层硬件交换数据。因此研究VC++和Matlab的混合编程具有很大的实际意义。 该文讨论了如何使用Matlab 的Complier 将*.m函数编译为动态链接库DLL,提供VC++ 调用的方法,提供了一种VC++与Matlab 混合编程的快速实现。 关键词:Matlab VC++ MCC Complier 动态链接库DLL 简介: Matlab 作为当今世界上应用最为广泛的数学软件,具有非常强大的数值计算、数据分析处理、系统分析、图形显示甚至符号运算的功能。已经在如生物工程,图像处理,语音处理,雷达探空,声纳探水,地震探地,以及控制论,系统论等各个领域得到广泛的应用。它是一个完整的数学平台,在这个平台上,用户只需寥寥数语就可以完成十分复杂的功能,大大提高了工程分析计算、图像处理的效率。但是Matlab 强大的功能只能在它所提供的平台上才能使用,即用户必须在安装Matlab 系统的机器上才能执行*.m文件。这样当用户需要将在Matlab下已开发完毕的复杂算法应用到高级语言开发环境下时就带了问题,是将现成的东西集成高级语言开发的程序中呢?还是用高级语

matlab心得及学习方法(不断更新)

竭诚为您提供优质文档/双击可除matlab心得及学习方法(不断更新) 篇一:matlab心得及学习方法 matlab心得及学习方法(不断更新) 发现现在很多人(找工作的或者读博的)都想要学习或者正在学习matlab,问我要怎么学习。其实我虽然写matlab 代码的经验还算丰富,但是还不能说是一个很好的matlab 编程人员,这里有一些心得,分享给大家希望对大家有所帮助。 关于如何学习matlab 我的学习方法很简单:matlab是练出来的,而不是看出来的。很多人问我有没有比较好的matlab教材,我说随便 找一本吧,都可以。只要书里面有最基本的语法和命令,对于一个有编程基础的人,matlab可以在一个下午的时间内学会。当然,仅仅是学会。如果想要对matlab比较得心应手,那么最好的办法就是练习。练习的素材很多,比如对于学经济学的,可以做一些simulation之类的,也可以试着把计 量或者宏观教材里面的一些算法写写出来。一开始可能很慢,

但是当你完成了一个比较大的project的时候,你的matlab 的功力将会有巨大的提升。 当然,在你写程序之前,多读一些别人写的好的code 是非常有帮助的。 一些matlab的经验 1、适当了解一些数值计算、数值分析以及最优化的理论 用matlab的无非是做数值计算或者最优化,这也是matlab的强项,matlab有足够多的工具箱解决这些问题。但是在使用这些工具箱之前,应该首先了解一些数值计算以及最优化的理论。这一点在程序碰到问题或者计算结果不理想的时候尤为重要。很多时候结果不理想并不是自己的理论出了问题,而是盲目或者错误使用matlab的工具箱而导致的。比如我曾经做过一个单纯形法的优化程序,但是结果总是不理想,这个时候就要返回到单纯形法具体是一种什么样的算法来考虑这个问题,最后发现是由于目标函数的某一部分十分平缓导致的。当然更重要的是如果你不理解理论,很多问题根本不知道如何处理。有个学化学同学就曾问我一个程序怎么写,说matlab肯定可以完成的。了解清楚之后才明白原来他想做的就是一个受限最小二乘。但是他不懂得什么是最小二乘(因为没怎么学过数学),当然面对这个问题无从下手。

如何学习MATLAB (书籍篇)

注:红色表示武汉大学图书馆的索书号,蓝色为本人为该书写的内容提要) 多次被朋友问到:如何快速入门并掌握MATLAB?碍于时间关系,总没能做过多的思考。现在觉得很有必要将这个问题搞个详细的分析。 1如何快速入门MATLAB并掌握MATLAB 如果你是学计算机的可以直接跳转到第二部分。建议你看看,可能会有所收获。其实,任何一门程序语言都是相通的,这正是大学计算机课程为什么只开设一门程序设计课程就可以了的一个很大的原因。如果你有C的基础就可以很快入门任何一门程序语言,加上几天的上机摸索,多参考基本教程,如果你够幸运一个星期就可以掌握一门程序语言。 MATLAB语言在欧美的使用程度就如同我们考试要带计算器一样,相当普及。任何一门课程都会使用MATLAB的。所以,对于工科学生来说,所学的任何一门课程,都可以用MATLAB来检验自己的学习程度。对于教材中的图形,都可以用MATLAB来重现;对于教材中所提出的所谓高深的理论或算法都可以编写自己的程序来检验对其理解的程度。我的理解是:只有你能够把程序编写出来,那就是真的理解该理论了。比如,我在大三学电力系统分析的时候,就自己编写了牛—拉法求潮流的程序,计算暂态稳定的简单程序,计算发电机短路电流的程序等等。自然地这些专业课程都学得不错。 2怎样入门MATLAB 经过多年的发展MATLAB的功能相当强大,积聚了当今世界上各行各业的顶级人士的精华。要学好、用好MATLAB不是短期所能为的。当然,要快速掌握它还是比较轻松的。大致可以分为一下几个阶段。 2.1MATLAB基本操作 这个阶段的目的在于掌握M文件和M函数的编写,掌握MATLAB的语法规则。对任何一门程序的掌握都是通过掌握该程序的语法来完成的。语句的表达对于任何语言都是一样的,如:x+y,x^2,sqrt(x)等等,所以重点是掌握语言三种结构的描述方法:顺序结构、分支结构和循环结构。只要知道了程序是怎么顺序执行的(有没有标号、结束时用分号还是不用还是逗号)、分支结构中的if语句和switch语句和循环结构中的for语句和while语句是怎么执行的,知道子程序的结构,那么你就基本掌握该语言了,至于类呀什么的,用到的时候再学。 在该阶段对于学习MATLAB比较好的书大致有 [1]张平.MATLAB基础应用简明教程[M].北京:航空航天大学,2001.TP213MA/Z278 [2]林雪松等.MATLAB7.0应用集锦[M].北京:机械工业出版社,2005.9.TP213MA/L534 [3]姚俊等.simulink建模与仿真[M].西安:西安电子科技大学,2002.8.TP213MA/Y237 2.2提高阶段

matlab学习笔记(入门)

数据类:double,unit8,unit16,unit32,int8,int16,int32,single,char,logical!Matlab中所有数值计算都可以用double类来进行!,unit8实际中最常用的图像 图像类型:亮度图像,二值图像,索引图像,RGB图像 亮度图像:是数据矩阵,若是unit8或uint16则是【0,255】或者是【0,65535】,若是double 类,则像素取值是浮点数 二值图像只有:0和1的逻辑数组! 、 简单操作: 读图并显示详细情况 >> f=imread('E:\image\book.pgm');whos Name Size Bytes Class Attributes f 289x338 97682 uint8 将图像垂直翻转: >> f=imread('E:\image\book.pgm');fp=f(end:-1:1, : );imshow(fp) 将图像上下左右翻转: f=imread('E:\image\book.pgm');fc=f(end:-1:1,end:-1:1);imshow(fc) 将图像二次采样并显示详情: >> fs=f(1:2:end,1:2:end);imshow(fs) >> whos fs Name Size Bytes Class Attributes fs 145x169 24505 uint8 将图像取出一部分: >> fg=f(200:250,200:300);imshow(fg) 显示图像中的一条水平扫描线: >> plot(f(200, : ) 将两幅图像进行相乘: f=imread('c:\image\liangdian.jpg');g=imread('c:\image\shuiguo.jpg'); g=g(300:715,500:1149);f=f(1:416,1:650);f d=double(f);gd=double(g); p=fd.*gd;数组乘! pmax=max(p(:));pmin=min(p(:));取最大最小值! pn=mat2gray(p);figure,imshow(pn) 亮度变化: 函数imadjust是对灰度图像进行亮度变化的基本ipt工具: g=imadjust(f,[low-in high-in],[low-in high-in],gamma) Gamma为1线性映射,大于1,则映射被加权至更低(更暗的)输出值,小于一,加权至更高的输出值 明暗反转图像(负片)参数不同: >> f=imread('E:\image\book.pgm');g=imadjust(f, [0 1],[1 0 ]);imshow(g) >> f=imread('E:\image\book.pgm');g=imadjust(f, [0 1],[1 0 ],2);imshow(g) >> f=imread('E:\image\book.pgm');g=imadjust(f, [0 1],[1 0 ],0.5);imshow(g) 另外也可以这样:进行明暗反转: g=imcomplement(f);imshow(g) 将0.5到0.75之间的灰度级拓展到0-1,可用于突出我们感兴趣的亮度带

MATLAB程序设计教学大纲

《MATLAB程序设计教学大纲》 课程代码:1010330 实验教学:24学时+16学时 课程学分:2.5 先修课程:C/C++程序设计语言或VB程序设计语言 课程的性质和教学目标 《MATLAB程序设计》是工科大学非计算机类理、工、管理专业学生的一门计算机必修基础课。MATLAB 作为一种高级科学计算软件,是进行算法开发、数据可视化、数据分析以及数值计算的交互式应用开发环境。本课程注重实际能力的培养,使学生能够运用MATLAB进行一般的工程计算,掌握MATLAB的基本技术。 二、教学要求: 课程的指导思想是“学以致用”,课程知识点系统全面,能锻炼学生的动手能力。课堂教学讲述了MATLAB基本技术,包括基本计算、矩阵处理、符号运算、计算结果可视化等,结合实际问题,探索“理论结合实践”的教学模式,注重精讲多练,培养学生利用MATLAB解决专业实际工程问题的能力。课堂教学覆盖不到之处通过实验课让学生在实践中学习,力求实现“教学与自学相结合”的教学原则,重视创新能力和综合能力的培养。 三、教学内容 第一章 MATLAB课程概述() 1. MATLAB开发环境介绍

2. MATLAB环境设置和路径设置 3. MATLAB的安装与激活 第二章 MATLAB程序设计基础() 1. 常量与变量的使用方法; 2. 数组的创建和使用方法; 3. 各种运算符的使用方法; 4. 函数文件的创立和使用:m文件的创建和调用方法; 5. 三种控制结构(顺序结构、分支结构和循环结构) 6. 调试技巧 第三章 MATLAB数值计算() 1. 矩阵运算(矩阵的构造,矩阵的基本运算和高级运算) 2. 多项式运算(多项式的构造和运算) 3. 其他数值计算 4. 数据处理(数据插值和曲线拟合) 第四章 MATLAB符号计算 1. 符号定义 2. 符号运算(初等代数运算,复合函数,反函数,极限,泰勒展开,级数求和,符号微分,符号积分等) 第五章图形处理 1. 2D图形处理 2. 3D图形处理 3. 声音与动画的实现 第六章图形用户界面编程简介

典型环节的MATLAB仿真讲解学习

实验一 典型环节的MATLAB 仿真 一、实验目的 1.熟悉MATLAB 桌面和命令窗口,初步了解SIMULINK 功能模块的使用方法。 2.通过观察典型环节在单位阶跃信号作用下的动态特性,加深对各典型环节响应曲线的理解。 3.定性了解各参数变化对典型环节动态特性的影响。 二、SIMULINK 的使用 MATLAB 中SIMULINK 是一个用来对动态系统进行建模、仿真和分析的软件包。利用SIMULINK 功能模块可以快速的建立控制系统的模型,进行仿真和调试。 1.运行MATLAB 软件,在命令窗口栏“>>”提示符下键入simulink 命令,按Enter 键或在工具栏单击 按钮,即可进入如图1-1所示的SIMULINK 仿真 环境下。 2.选择File 菜单下New 下的Model 命令,新建一个simulink 仿真环境常规模板。 3.在simulink 仿真环境下,创建所需要的系统。 以图1-2所示的系统为例,说明基本设计步骤如下: 图1-1 SIMULINK 仿真界面 图1-2 系统方框图

1)进入线性系统模块库,构建传递函数。点击simulink 下的“Continuous ”,再将右边窗口中“Transfer Fen ”的图标用左键拖至新建的“untitled ”窗口。 2)改变模块参数。在simulink 仿真环境“untitled ”窗口中双击该图标,即可改变传递函数。其中方括号内的数字分别为传递函数的分子、分母各次幂由高到低的系数,数字之间用空格隔开;设置完成后,选择OK ,即完成该模块的设置。 3)建立其它传递函数模块。按照上述方法,在不同的simulink 的模块库中,建立系统所需的传递函数模块。例:比例环节用“Math ”右边窗口“Gain ”的图标。 4)选取阶跃信号输入函数。用鼠标点击simulink 下的“Source ”,将右边窗口中“Step ”图标用左键拖至新建的“untitled ”窗口,形成一个阶跃函数输入模块。 5)选择输出方式。用鼠标点击simulink 下的“Sinks ”,就进入输出方式模块库,通常选用“Scope ”的示波器图标,将其用左键拖至新建的“untitled ”窗口。 6)选择反馈形式。为了形成闭环反馈系统,需选择“Math ” 模块库右边窗口“Sum ”图标,并用鼠标双击,将其设置为需要的反馈形式(改变正负号)。 7)连接各元件,用鼠标划线,构成闭环传递函数。 8)运行并观察响应曲线。用鼠标单击工具栏中的“”按钮,便能自动运行仿真环境下的系统框图模型。运行完之后用鼠标双击“Scope ”元件,即可看到响应曲线。 三、实验原理 1.比例环节的传递函数为 K R K R R R Z Z s G 200,1002)(211212==-=-=-= 其对应的模拟电路及SIMULINK 图形如图1-3所示。

《非参数统计》与MATLAB编程 第四章 符号秩和检验法

第四章符号和检验法 函数 signrank 格式 p = signrank(x) 原假设为x的中位数为0,显著性水平为0.05的双侧检验。 p = signrank(x,m) 原假设为x的中位数为m,显著性水平为0.05的双侧检验。 p = signrank(x,m,alpha) 原假设为x的中位数为m,显著性水平为alpha的双侧检验。 [p,h] = signrank(...,'alpha', alpha) 例:[p,h] = signrank(...,'alpha', 0.01) [p,h,stats] = signrank(...,'method', ‘exact’) 用精确的方法 [p,h] = signrank(...,'method', ‘approximate’) 用正态近似的方法 [p,h,stats]=signrank(x,y,'alpha',0.01,'method','exact') [p,h,stats]=signrank(y1,y2,0.01,'method','approximate') 所P值除以2,得到相应单侧检验的P值。 §4.2 x=[20.3 23.5 22 19.1 21 24.7 16.1 18.5 21.9 24.2 23.4 25]; y=[18 21.7 22.5 17 21.2 24.8 17.2 14.9 20 21.1 22.7 23.7];

[p,h,stats]=signtest(x,y) p = 0.3877 h = stats = sign: 4 length(find((x-y)>0)) ans = 8 2*(1-binocdf(7,12,0.5)) ans = 0.3877 p =0.3877与书上算的不一样,书上算错了。符号检验接受原假设。

Matlab 学习经验

Matlab心得及学习方法(不断更新) P.S. 那些网上转载我的文章不写明出处的傻眼了吧?!老子更新了! 发现现在很多人(找工作的或者读博的)都想要学习或者正在学习Matlab,问我要怎么学习。其实我虽然写Matlab代码的经验还算丰富,但是还不能说是一个很好的Matlab编程人员,这里有一些心得,分享给大家希望对大家有所帮助。 关于如何学习Matlab 我的学习方法很简单:Matlab是练出来的,而不是看出来的。很多人问我有没有比较好的Matlab教材,我说随便找一本吧,都可以。只要书里面有最基本的语法和命令,对于一个有编程基础的人,Matlab可以在一个下午的时间内学会。当然,仅仅是学会。如果想要对Matlab比较得心应手,那么最好的办法就是练习。练习的素材很多,比如对于学经济学的,可以做一些simulation之类的,也可以试着把计量或者宏观教材里面的一些算法写写出来。一开始可能很慢,但是当你完成了一个比较大的project的时候,你的Matlab的功力将会有巨大的提升。 当然,在你写程序之前,多读一些别人写的好的code是非常有帮助的。 一些Matlab的经验 1、适当了解一些数值计算、数值分析以及最优化的理论 用Matlab的无非是做数值计算或者最优化,这也是Matlab的强项,Matlab有足够多的工具箱解决这些问题。但是在使用这些工具箱之前,应该首先了解一些数值计算以及最优化的理论。这一点在程序碰到问题或者计算结果不理想的时候尤为重要。很多时候结果不理想并不是自己的理论出了问题,而是盲目或者错误使用Matlab的工具箱而导致的。比如我曾经做过一个单纯形法的优化程序,但是结果总是不理想,这个时候就要返回到单纯形法具体是一种什么样的算法来考虑这个问题,最后发现是由于目标函数的某一部分十分平缓导致的。当然更重要的是如果你不理解理论,很多问题根本不知道如何处理。有个学化学同学就曾问我一个程序怎么写,说matlab肯定可以完成的。了解清楚之后才明白原来他想做的就是一个受限最小二乘。但是他不懂得什么是最小二乘(因为没怎么学过数学),当然面对这个问题无从下手。 2、理解Matlab中时间空间的转化 这个问题没有人强调,但我觉着蛮重要。这里的关键点其实很简单,就是尽量减少重复计算,哪怕是多项式复杂度以内的计算。重复计算的内容应该适时保存到内存中,以后直接调用。一个程序可能会重复运行几千次几万次,一点点的浪费时间都可能被放大很多。空间(内存)我们是可以扩充的,但是时间不是,所以绝大多数时候我们需要放弃空间,获得时间上的迅捷。 这里有个故事,曾经在某技术论坛上看到的,说腾讯公司早期做的QQ实在太过垃圾,他们追踪过QQ的行为,发现在几分钟时间里重复调用了某同一注册表项几百次。显然注册表的内容所占内存是有限的,甚至是可以忽略的,但是每次读注册表项可能都要读硬盘,这里的时间花费是很大的,为什么不把这项内容直接存储在内存里呢? 一个比较经典的例子:考虑交换两个变量a,b的值,有如下写法: c=a; a=b; b=c; 或者: a=a+b; b=a-b;

(完整word版)Matlab学习笔记(全)

Matlab学习笔记 ——《MATLAB与科学计算》 王正盛国防工业出版社 一.MA TLAB入门 (4) who、whos和永久变量 (4) 显示格式 (4) 图形 (4) 二.MA TLAB数值计算 (5) 1.常用命令: (5) 2.矩阵的保存和获取 (5) 3.矩阵的运算和数组的运算 (5) 4.线性方程组 (5) 5.多项式 (6) 6.数值积分 (6) 7.一般非线性方程组求解 (6) 8.微分方程的数值求解 (7) 三.MATLAB的符号计算 (7) 1.符号变量和符号表达式 (7) 2.微积分运算 (7) 3.解方程 (8) 4.化简和代换 (8) 5.MA TLAB的符号表达式命令 (8) 四.MA TLAB的图形和可视化 (9) 1.二维图形 (9) 2图形标记 (9) 3.特殊坐标和图形 (9) 4.其他命令 (9) 5.填充命令 (10) 6.三维图形 (10) 7.符号绘图 (10) 8.其他 (10) 五.MA TLAB程序设计 (10) 1.概述: (10) 2.命令文件 (11) 3.程序文件 (11) 六.MA TLAB图形用户界面(GUI)设计 (11) 七.基于MA TLAB的大规模矩阵计算 (11) 1.稀疏矩阵 (11) 八.基于MA TLAB的最优化问题求解 (12) 1.线性规划问题 (12) 2.非线性问题 (12)

3.二次规划问题 (12) 九.基于MA TLAB的数据插值和拟合 (12) 1.一维数据插值 (12) 2.二维数据插值 (13) 3.曲线拟合 (13) 十.基于MA TLAB的图像处理初步 (13) 1.图像分类 (13) 2.图像的读取和显示 (13)

(完整版)Matlab学习心得系列——002.Matlab编程思想——向量化编程

002. Matlab 编程思想——向量化编程 C 语言的基本元素是单数值(比如单变量或数组里的元素),再加上其结构化的特点,决定了通常C语言程序大都充斥着大量罗嗦的单变量循环和判断语句(注1)。 而Matlab 是以向量、矩阵为基本元素的,所以要编写真正的Matlab 程序必须抛弃【 C 语言那种“单数值、元素化”考虑问题】的思路,转以向量、矩阵为最小单位来考虑问题。也就是说,Matlab 的编程思想是——向量化编程,即面向向量或矩阵。 这样做的好处,至少有两个: (1)代码大大简化,易编程、清晰可读性强; 这样的代码才叫Matlab 代码,否则只能是不伦不类的代码: C 不C,Matlab 不Matlab. 2)执行效率也更高; 这是次要的,随着Matlab 对循环机制的优化,速度差异已不再 那么明显,关键是(1)

F面针对Matlab中常见的向量化处理问题方法,举例加以说明: (一)整体操作“大块数据” Matlab为同型的数据块(向量或矩阵)的整体做运算提供了【点运算】这里我借用《线性代数》里的说法,矩阵行数、列数相同称为同型矩阵,Matlab里矩阵可能不止2维。 比如,A.*C和A./C表示A与C的对应位置的各元素做*和/ 运算得到与它们同型的一个新矩阵。 例1.物理实验利用测得的电压电流具体数据,验证欧姆定律R=U/I. 代码1( C语言风格) U = [0.89, 1.20, 3.09, 4.27, 3.62, 7.71,8.99, 7.92, 9.70, 10.41]; I = [0.028, 0.040, 0.100, 0.145, 0.118, 0.258, 0.308, 0.345]; 0.299, 0.257, L = len gth(U); S = 0; for k = 1:L R(k) = U(k)/I(k); S = S + R(k); end R = S/L 运行结果:R = 30.5247 代码1' (Matlab风格) U = [0.89, 1.20, 3.09, 4.27, 3.62, 7.71,8.99, 7.92, 9.70, 10.41];

相关主题
文本预览
相关文档 最新文档