Matlab计算与仿真技术第九讲 Matlab编程-III_第1页
Matlab计算与仿真技术第九讲 Matlab编程-III_第2页
Matlab计算与仿真技术第九讲 Matlab编程-III_第3页
Matlab计算与仿真技术第九讲 Matlab编程-III_第4页
Matlab计算与仿真技术第九讲 Matlab编程-III_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Matlab计算与仿真技术第九讲:Matlab编程-III第八讲回顾Matlab编程-III-变量查询

-匿名函数

-参数交互输入

-Matlab程序调试

-语言结构与调试函数第九讲提纲第八讲回顾函数的定义及申明

-使用方式:调用/嵌套

-协作方式:主函数/子函数/嵌套函数

-内部变量:生存周期控制控制语句

-if/if-else/if-elseif-…-else-switch-case-for/while

第八讲回顾(续)

if语句一般形式

iflogical_expressionblockofstatements

elseiflogical_expressionblockofstatements……

else

blockofstatements

end第八讲回顾(续)

switch

语句

一般形式

switchexpression

casevalue1,

blockofstatementscasevalue2,blockofstatements...otherwise,

blockofstatementsend第八讲回顾(续)-循环结构

根据条件重复执行程序指令或模块

for语句

%

计数循环

一般形式

forindex=expressionblockofstatementsend第八讲回顾(续)

while

语句

一般形式

whileexpressionblockofstatementsendMatlab编程(续)while

语句实例:newton法计算

whileabs(rold-r)>deltarold=r;r=0.5*(rold+x/rold);endMatlab编程(续)循环中断控制:while

语句实例

x=rand(1,10);k=1;whilek<=10ifx(k)>0.8

breakendk=k+1;endMatlab编程(续)函数返回控制:while

语句实例

x=rand(1,10);k=1;whilek<=10ifx(k)>0.8

returnendk=k+1;end综合练习:利用级数展开近似计算sin

-提示sin

的级数展开为

-m-函数实例

1:functions=powersin(x);2:%POWERSIN.Powerseriesforsin(x).3:%POWERSIN(x)triestocompute…sin(x)fromapowerseries.Matlab编程(续)Matlab编程(续)

4:s=0;

5:t=x;

6:n=1:

7:whileabs(t)>eps

8:s=s+t;

9:t=-x.^2/((n+1)*(n+2)).*t;

10:n=n+2;

11:end综合练习七:生命周期曲线

-提示:生理-23天;情感-28天;智力-33天

functionbiorythm(mybirthday)t0=datenum(mybirthday);t1=fix(now);t=(t1-28):1:(t1+28);t=t';y=100*[sin(2*pi*(t-t0)/23)…sin(2*pi*(t-t0)/28)…sin(2*pi*(t-t0)/33)];Matlab编程(续)

plot(t,y(:,1),t,y(:,2),'--',t,y(:,3),'.-',[t1t1],[-100100],'k:');datetick('x','dd/mm','keeplimits');axistight;title(mybirthday);legend('Physical','Emotional','Intellectual');xlabel('time[dd/mm]');ylabel('biorythmindex[%]')Matlab编程(续)-关于函数变量与参数传递

输入(输出)变量查询函数:nargin(nargout)

功能:返回函数的输入(输出)个数应用:根据变量个数,选取模块执行

functionc=testarg1(a,b)if(nargin==1)

c=a.^2;elseif(nargin==2)

c=a*b;endMatlab编程(续)Matlab编程(续)

-变量的传递

输入(输出)变量查询函数:varargin(varargout)

功能:返回由函数的输入(输出)变量的元胞数组

元胞:

Matlab的数据类型,由{}标识

{}中可以是算术/逻辑/字符/结构数据类型,例如

>>A(1,1)={[143;058;729]};>>A(1,2)={'AnneSmith‘};>>A(2,1)={3+7i};>>A(2,2)={-pi:pi/10:pi};Matlab编程(续)

-变量的传递(续):替代列表

注意:元胞数组的引用:{}

functiontestvar(varargin)fork=1:length(varargin)x(k)=varargin{k}(1);%Cellarrayindexingy(k)=varargin{k}(2);endxmin=min(0,min(x));ymin=min(0,min(y));

axis([xminfix(max(x))+3yminfix(max(y))+3])plot(x,y)Matlab编程(续)-函数句柄定义:指向函数的Matlab值,基本格式

fhandle=@functionname

fhandle可以作为变量传递功能:用于函数的创建和访问(运算)>>sqr=@(x)x.^2%匿名函数

>>trigFun={@sin,@cos,@tan}>>plot(trigFun{2}(-pi:0.01:pi))Matlab编程(续)函数句柄的引用格式

fhandle(arg1,arg2,...,argn)

实例:fhandle指向函数的曲线绘制

functionx=plotFHandle(fhandle,data)plot(data,fhandle(data))

引用:绘制sin函数的曲线

>>plotFHandle(@sin,-pi:0.01:pi)Matlab编程(续)

匿名函数创建匿名函数

fhandle=@(arglist)expr

创建实例

>>sumxy=@(x,y)(x+y)

应用操作

>>sumxy(5,7)

匿名函数元胞组实例

>>A={@(x)x.^2,@(y)y+10,(x,y)x.^2+y+10}A=[@(x)x.^2][@(y)y+10][@(x,y)x.^2+y+10]>>A{1}(4)+A{2}(7)ans=33

>>A{3}(4,7)ans=33

Matlab编程(续)参数化的匿名函数

>>

a=1.3;b=.2;c=30;>>parabola=@(x)a*x.^2+b*x+c;>>fplot(parabola,[-2525])

%fplot(@(x)a*x.^2+b*x+c,[-2525])

>>a=-3.9;b=52;c=0;>>fplot(parabola,[-2525])

提示:fplot绘制句柄指向函数的图形Matlab编程(续)Matlab编程(续)多重匿名函数的使用

问题:计算提示:quad是matlab缺省的积分计算函数

回忆:>>lookforquad

>>g=@(c)(quad(@(x)(x.^2+c*x+1),…0,1));

>>g(2)Matlab编程(续)用户参数交互输入参数的作用:使程序更加通用灵活参数输入的主要模式

-

input函数输入参数

-keyboard函数(键盘模式)

-menu函数(菜单模式)

Matlab编程(续)键盘输入模式基本格式:v=input(‘显示的提示信息’);

功能实现:向用户显示提示信息将用户的输入赋给v

使用实例

freq=input(‘frequenceis’)

结果

frequenceis(等待键盘输入,

回车确认输入完成)Matlab编程(续)键盘控制模式基本格式:keyboard;

功能实现:临时终止程序执行将控制权交给命令窗口利用回车结束键盘控制使用实例查询/修改函数工作空间的变量

建立新的函数空间的变量Matlab编程(续)菜单输入模式基本格式:

item_no=menu(‘title’,’item1’,…’itemn’);

功能实现:显示菜单用户选择按钮返回菜单序号使用实例

s=menu(‘signal’,’red’,’green’,yellow’)

可结合选择控制语句使用Matlab编程(续)程序设计技术循环向量化计算模式目的:向量计算替代循环模式实例:ticticfort=0:0.01:100t=0.0:0.01:100

i=i+1;y(i)=sin(t)y=sin(t)endtoctoc耗时7.58耗时0.01Matlab编程(续)程序设计技术(续)

阵列预分配空间目的:避免循环过程空间分配的耗时实例:y(k)=0.75y(k-1)-0.125y(k-2)+2u(k)

clearall,tic

T=0.001;

t=[0:T:16]u=sin(2*pi*t);%y=zeros(size(u))

y(1)=2

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论