分享
分销 收藏 举报 申诉 / 12
播放页_导航下方通栏广告

类型010.自定义函数.doc

  • 上传人:人****来
  • 文档编号:4130788
  • 上传时间:2024-07-31
  • 格式:DOC
  • 页数:12
  • 大小:32.07KB
  • 下载积分:8 金币
  • 播放页_非在线预览资源立即下载上方广告
    配套讲稿:

    如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

    特殊限制:

    部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

    关 键  词:
    010. 自定义 函数
    资源描述:
    010. 自定义函数 函数——是编程的核心概念之一,是能够完成相对独立功能的代码封装成的模块。 在主程序中通过函数名和实参调用它,通过接口(即函数的输入、输出参数)来实现“通讯”。所以在调用函数时,你只要知道【被调用的函数是用来做什么的】,以及【如何对应它的输入、输出参数】就行了。 关于【形参(形式参数)】和【实参(实际参数)】:函数定义中的参数就是形参,只是用来限定函数所接收的数据类型的,“泛指该数据类型下任一元素”;函数调用中的参数就是实参,是“特指的具体数值”来代入函数体执行代码。例如(C语言): int max(int x, int y) { if (x >= y) return x; else return y; } …… int a = 5, b = 4; max(2,3); max(a,b); …… 其中,x,y是形参,2, 3,a, b是实参。 使用函数的好处:增加程序的可读性(函数可独立放在主程序之外)和重用性(一个函数可以多次被调用)。 Matlab的自定义函数,常用的有:m文件定义函数、inline(内联)函数、匿名函数。 一、 m文件定义函数(m-函数) 1. 依次File-->New-->Function,会弹出一个新编辑窗口,包含代码如下: function [ output_args ] = Untitled2( input_args ) % UNTITLED2 Summary of this function goes here % Detailed explanation goes here end function [ output_args ] = Untitled( input_args ) %UNTITLED Summary of this function goes here % Detailed explanation goes here end 这是一个m-函数的模板。 function:表示编写的是一个函数。 output_args: 输出参数,即函数的返回值,各返回值间用逗号隔开。(不需要像C语言那样,通过return到返回值来赋值,outp_args相应的参数可以直接使用) input_args: 输入参数,各参数之间用逗号隔开。 Untitled:  所定义的函数名。注意:函数名和m文件名需要保持一致。 end 表示此函数编辑完毕。 函数的基本结构: function  [ 输出形参表: output1, output1, ..., outptn ] = 函数名 [输入形参表: input1, input2, ... , inputn]     注释说明部分     函数体代码部分 end 说明:(1) 在调用函数时要使用编写此函数的文件名,一般函数名和文件名保持一致。 (2) 函数中遇return语句时,退出函数体,此函数调用结束。 (3) 函数调用的一般格式是: [输出实参表]=函数名(输入实参表) (4) 在调用函数时,Matlab用两个永久变量nargin和nargout分别记录调用该函数时的输入实参和输出实参的个数。只要在函数文件中包含这两个变量,就可以准确地知道该函数文件被调用时的输入输出参数个数,从而决定函数如何进行处理。   2. 函数体 完成函数的具体功能,是根据具体需要编写的。通过使用“函数的输入参数”、“自定义变量”(注意Matlab的变量不用定义,赋值即可)、“流程控制结构”来实现。 3. 子函数 函数体里面也可以定义一个或几个函数,称为子函数。 注意:① 子函数只能存在于主函数体内,不独立存在;② 子函数在主函数体内的位置可以任意,不影响使用;③ 子函数只能被主函数以及其他位于同一主函数体下的子函数调用,但子函数“句柄”(见下文)例外。 4. 函数调用 定义完m文件的函数,放置在Matlab的当前路径之下(或修改当前路径为m-函数文件所在路径),然后就和使用Matlab自带的函数一样,直接在命令窗口使用该函数就是调用它了。调用函数时,需要知道函数是干嘛的,以及它的输入参数、输出参数。 例1 函数(子函数)定义与调用示例,求向量的最大、最小值。 编写m-函数文件:max_min_values.m function [max,min] = max_min_values(X) max=mysubfun1(X); min=mysubfun2(X); function r=mysubfun1(X) %子函数1 x1=sort(X, 'descend'); r=x1(1); end function r=mysubfun2(X) %子函数2 x1=sort(X); r=x1(1); end end 命令窗口: A = [34,56,23,11,2,39]; [m,n]=max_min_values(A) 运行结果: m = 56 n = 2 二、 内联函数——使用inline() 可以让用户编写简单的函数而不需要创建M文件。语法格式: f=inline(‘函数表达式’, ‘变量1’, ‘变量2’, ……) 调用方式:y=f(实参列表) 注意:实参列表顺序应与inline()定义中形参(即变量名)的顺序一致。 注:这种函数定义方式是将它作为一个内部函数调用。好处是,它是基于Matlab的数值运算内核的,所以它的运算速度较快,程序效率更高。缺点是,该方法只能对数值进行代入,不支持符号代入,且对定义后的函数不能进行求导等符号运算。 例2 内联函数示例。 f=inline(‘x^2+y’,’x’,’y’) z=f(2,3) 运行结果: f = Inline function: f(x,y) = x^2 + y z = 7 三、匿名函数 匿名函数具有 inline() 的所有优点,并且效率比inline函数高,类似于C语言的宏。一旦定义了匿名函数,使用方式和inline函数类似。 使用matlab函数句柄操作符@,可以定义指向matlab内置函数和用户自定义函数的函数句柄,函数句柄也可以像函数一样的使用。 注:函数句柄,可以理解成函数的“代号”,适用于函数名比较长,用“代号”代替函数操作更方便。 例3 匿名函数示例。 f=@(x,y)x^2+y^2; f(2,3) a=1:5; b=5:-1:1; c=0.1:0.1:0.5; g=@(x,y)x.^2+y.^2+c; g(a,b) 运行结果: ans = 13 ans = 26.1000 20.2000 18.3000 20.4000 26.5000 四、其他函数定义 1. Syms+subs: 用syms定义一个符号表达式,用subs调用: 该方法的优点是,可以用符号进行替换;缺点是,由于使用符号运算内核,运算速度会大大降低。例如, Syms f x; % 定义符号变量 f=1/(1+x^2); % 定义符号表达式 subs(f,'x','y^2') % 调用函数表达式,用y^2替换变量x 运行结果:ans = 1 ------ 4 1 + y 2. 字符串+subs 直接定义一个字符串,用subs命令调用。例如: f='1/(1+x^2)'; z=subs(f,'x',2) g=subs(f,'x','y^2') 运行结果:z = 1/5 g = 1 ------ 4 1 + y 注:优点是,占用内存最少,定义格式方面自由。缺点是,无法对字符进行符号转化。 补充: matlab的流程控制语句(编程语言基本都通用)   (一)分支结构 (1) if语句  if 条件1     matlab语句1;  elseif 条件2     matlab语句2;        .......    else       matlab语句n;   end 注意:① 判断条件不用加小括号;结尾必须用end来标识if语句结束; ② 某个逻辑条件为真,则执行且只执行下一条matlab语句(以“ ; ”结尾的)或 { } 中间的程序块。 (2)switch语句(与if语句类似) switch 表达式    case  表达式1        matlab语句1   case  表达式2      matlab语句2     ........   case 表达式n     matlab语句n  otherwise     matlab语句n+1 end (3)try语句 try     matlab语句1 catch     matlab语句2 end      说明:try语句先试探性执行语句组1,如果语句组1在执行过程中出现错误,则将错误信息赋给保留的lasterr变量,并转去执行语句组2。 (二)循环结构 (1) for语句 for 循环变量 = 初始值 : 步长 : 终值       循环体语句 end 执行过程:给循环变量赋初始值,判断若小于终值(若步长为负则大于),则执行循环体语句;循环变量加一个步长,再判断若小于终值,则执行循环体语句;重复前面过程直到循环变量不小于终值,跳出循环。 (2)while语句 while(条件)     循环体语句 end 执行过程:若条件成立,则执行循环体语句,执行后再判断条件是否成立,如果不成立则跳出循环。
    展开阅读全文
    提示  咨信网温馨提示:
    1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
    2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
    3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
    4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
    5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
    6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。

    开通VIP折扣优惠下载文档

    自信AI创作助手
    关于本文
    本文标题:010.自定义函数.doc
    链接地址:https://www.zixin.com.cn/doc/4130788.html
    页脚通栏广告

    Copyright ©2010-2026   All Rights Reserved  宁波自信网络信息技术有限公司 版权所有   |  客服电话:0574-28810668    微信客服:咨信网客服    投诉电话:18658249818   

    违法和不良信息举报邮箱:help@zixin.com.cn    文档合作和网站合作邮箱:fuwu@zixin.com.cn    意见反馈和侵权处理邮箱:1219186828@qq.com   | 证照中心

    12321jubao.png12321网络举报中心 电话:010-12321  jubao.png中国互联网举报中心 电话:12377   gongan.png浙公网安备33021202000488号  icp.png浙ICP备2021020529号-1 浙B2-20240490   


    关注我们 :微信公众号  抖音  微博  LOFTER               

    自信网络  |  ZixinNetwork