利用单独的M文件并递归地调用该文件,既可以避免多个M文件的复杂性,又可以利用函数的优点。使用开关 switches或if  elseif语句,可将回调函数装入调用函数内。

通常这样一种函数调用的结构为

function guifunc(switch)。

其中switch确定执行哪一个函数开关的参量,它可以是字符串 ' startup ' , ' close ' , ' sectolor ' 等等,也可以是代码或数字。如switch是字符串,则可如下面所示的M文件片段那样将开关编程。

if nargin < 1, switch =  ' startup ' ; end;

if ~isstr(switch), error( ' Invalid argument ' ), end;

if strcmp(switch, ' startup ' ),

elseif strcmp(switch, ' setcolor ' ),

elseif strcmp(switch, ' close ' ),

end

如果是代码或字符串,开关也可以相同方式编程。

if nargin < 1, switch = 0; end;

if isstr(switch), error( ' Invalid argument ' ), end;

if switch = = 0,

elseif switch = =1,

elseif switch ==2,

end

下面的例子说明了方位角滑标如何可作为单独的函数M文件来实现:

function setview(switch)

if nargin < 1, switch =  ' startup ' ; end;

if ~isstr(switch), error( ' Invalid argument. ' ); end;

vw = get(gca, ' view ' ); % This information is needed in both sections

if strcmp(switch, ' startup ' ) % Define the controls and tag them

Hc_az = uicontrol(gcf, ' Style ' , ' slider ' ,...

' Position ' ,[10 5 140 20],...

' Min ' ,-90, ' Max ' ,90, ' Value ' vw(1),...

' Tag ' , ' AZslider ' ,...

' Callback ' , ' setview( ' set ' ) ' );

Hc_min=uicontrol(gcf, ' Style ' , ' text ' ,...

' Position ' ,[10 25 40 20],...

' String ' ,num2str(get(Hc_az, ' Min ' )));

Hc_max = uicontrol(gcf, ' Style ' , ' text ' ,...

' Position ' ,[110 25 40 20],...

' String ' ,num2str(get(Hc_az, ' Max ' )));

Hc_cur =uicontrol(gcf, ' Style ' , ' text ' ,...

' Position ' ,[60 25 40 20],...

' Tag ' , ' AZcur ' ,...

' string ' ,num2str(get(Hc_az, ' Value ' )));

elseif strcmp(switch, ' set ' ) % Execute the Callback

Hc_az=findobj(gcf, ' Tag ' , ' AZslider ' );

Hc_cur-findobj(gcf, ' Tag ' , ' AZcur ' );

str = num2str(get(Hc_az, ' Value ' ));

newview - [get(Hc_az, ' Value ' ) vw(2)];

set(Hc_cur, ' String ' , str)

set(gca, ' View ' ,newview)

end

上述的两个例子均设置了 ' tag ' 属性,利用该属性和函数findobj寻找回调函数所需对象的句柄。

matlab中如何实现递归,Matlab中递归函数调用详解相关推荐

  1. C#中的递归APS和CPS模式详解(转载)

    这篇文章主要介绍了C#中的递归APS和CPS模式详解,本文讲解了累加器传递模式.CPS函数.CPS变换.CPS尾递归.尾递归与Continuation等内容,需要的朋友可以参考下 累加器传递模式(Ac ...

  2. JAVA中的类和对象之this的详解

    系列文章目录 第一章 JAVA中的类和对象之this的详解 目录 前言 一.为什么要有this引用 二.this的三种用法 1.this.成员变量 2.this.成员方法 3.this()调用其它的构 ...

  3. 对python3中pathlib库的Path类的使用详解

    原文连接   https://www.jb51.net/article/148789.htm 1.调用库 ? 1 from pathlib import 2.创建Path对象 ? 1 2 3 4 5 ...

  4. java中属性文件读取案例_java相关:Spring中属性文件properties的读取与使用详解

    java相关:Spring中属性文件properties的读取与使用详解 发布于 2020-6-3| 复制链接 摘记: Spring中属性文件properties的读取与使用详解实际项目中,通常将一些 ...

  5. JAVA中希尔排序去的讲解_java 中基本算法之希尔排序的实例详解

    java 中基本算法之希尔排序的实例详解 希尔排序(Shell Sort)是插入排序的一种.也称缩小增量排序,是直接插入排序算法的一种更高效的改进版本.希尔排序是非稳定排序算法.该方法因DL.Shel ...

  6. python3库_对python3中pathlib库的Path类的使用详解

    用了很久的os.path,今天发现竟然还有这么好用的库,记录下来以便使用. 1.调用库 from pathlib import 2.创建Path对象 p = Path('D:/python/1.py' ...

  7. python中requests库的用途-python中requests库session对象的妙用详解

    在进行接口测试的时候,我们会调用多个接口发出多个请求,在这些请求中有时候需要保持一些共用的数据,例如cookies信息. 妙用1 requests库的session对象能够帮我们跨请求保持某些参数,也 ...

  8. Java中print、printf、println的区别 详解

    Java中print.printf.println的区别详解 printf主要是继承了C语言的printf的一些特性,可以进行格式化输出 print就是一般的标准输出,但是不换行 println和pr ...

  9. ASP中利用OWC控件实现图表功能详解[zz]

    ASP中利用OWC控件实现图表功能详解 在ASP中利用OWC(Office Web Components)控件可轻松实现各种图表功能,如饼图,簇状柱型图,折线图等. 在下面的代码中我详细的给出了饼图, ...

  10. python random randint_python中random.randint和random.randrange的区别详解

    在python中,通过导入random库,就能使用randint 和 randrange 这两个方法来产生随机整数.那这两个方法的区别在于什么地方呢?让我们一起来看看! 区别: randint 产生的 ...

最新文章

  1. 机器学习-斯坦福:学习笔记6-朴素贝叶斯
  2. C#中保存Gif文件设置透明无效果
  3. c++ template笔记(2)模板类
  4. SSH框架应用中常用Jar包用途介绍
  5. 计算机应用与维修专业主修,计算机应用与维修专业个人简历制作
  6. JS难点之hoist
  7. 关于禁止ViewPager预加载问题【转】
  8. 传奇外网架设教程带图文解说——Gom引擎
  9. 计算机网络中期论文,计算机 毕业论文(设计)中期报告
  10. oracle某字段所在的表,在oracle中怎么通过字段名查询其所在的表
  11. Open Wifi SSID Broadcast vulnerability
  12. win10+RTX3050ti+TensorFlow+cudn+cudnn配置深度学习环境
  13. 这位程序员桌面很干净
  14. 一道笔试题(求质数乘积)
  15. 安卓开发之 在应用中使用数据库
  16. Cisco Packet Tracer交换机间相同VLAN通信
  17. c语言实现动态字符串,C语言怎么实现可变长度字符串
  18. kubernetes pod infra container网络原理
  19. pycoin学习笔记(4) 生成交易,使用jsonrpc签名并广播
  20. Ublox F9P通过NTRIP实现实时RTK定位

热门文章

  1. android 自动获取短信,安卓app怎样获取短信验证码自动输入
  2. 【Java】操作doc文件
  3. 阿里云ECS服务器即将到期,怎么将原服务器系统环境迁移到新的服务器?
  4. 【Exploring and Thinking】——闵帆老师论文写作课程学习心得
  5. SOLIDWORKS 2016官方正版功能介绍
  6. 《中国垒球》:跨界互动·全明星赛
  7. Connected to the target VM, address 'localhost8601', transport 'socket'
  8. java 网页排版乱_HTML、DIV+CSS网页制作中排版混乱的几种常见的情况
  9. 一个扑街自媒体人的自白:我曾经月入15000,却是昙花一现
  10. Q3流媒体付费用户超1亿,迪士尼迈过“鼠年关”有戏?