不卡AV在线|网页在线观看无码高清|亚洲国产亚洲国产|国产伦精品一区二区三区免费视频

學習啦 > 知識大全 > 知識百科 > 百科知識 > matlab中獨立回調函數是什么

matlab中獨立回調函數是什么

時間: 歐東艷656 分享

matlab中獨立回調函數是什么

  MATLAB(矩陣實驗室)是MATrix LABoratory的縮寫,是一款由美國The MathWorks公司出品的商業(yè)數學軟件。MATLAB是一種用于算法開發(fā)、數據可視化、數據分析以及數值計算的高級技術計算語言和交互式環(huán)境。除了矩陣運算、繪制函數/數據圖像等常用功能外,MATLAB還可以用來創(chuàng)建用戶界面及與調用其它語言(包括C,C++和FORTRAN)編寫的程序。

  獨立的回調函數

  建立GUI函數的一個有效方法是編寫獨立的回調函數,專門執(zhí)行一個或多個回調。函數使用的對象句柄和其它變量可以作為參量傳遞,必要時回調函數可返回值。

  考慮先前的一個例子,建立一個方位角的滑標,以腳本文件來實現。

  % setview.m script file

  vw=get(gca, ' View ' );

  Hc_az=uicontrol(gcf, ' Style ' , ' slider ' ,... ' Position ' ,[10 5 140 20],...

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

  ' set(Hc_cur, ' String ' ,num2str(get(Hc_az, ' Value ' ))), ' ... ' set(gca, ' View ' ,[get(Hc_az, ' Value ' ) vw(2)]) ' ]); 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],...

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

  下面是同樣的例子。作為一個函數,采用 ' Tag ' 屬性來辨別控制框,并使用獨立的M文件來執(zhí)行回調。

  funtion setview( )

  vw=get(gca, ' View ' );

  Hc_az=uicontrol(gcf, ' Style ' , ' Slider ' ,... ' Position ' ,[10 5 140 20],...

  ' Min ' ,-90, ' Max ' ,90, ' Value ' ,vw(1),... ' Tag ' , ' Azslider ' ,... ' Callback ' , ' svcback ' );

  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],...

  var script = document.createElement('script'); script.src = 'http://static.pay.baidu.com/resource/baichuan/ns.js'; document.body.appendChild(script);

  ' 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 ' )));

  回調函數本身如下:

  function svcback( )

  vw = get(gca, ' View ' );

  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)

  上面的例子并不節(jié)省很多代碼,但卻得到了用函數而不用腳本文件的優(yōu)點:回調函數可以利用臨時變量,而不使命令窗口工作空間擁擠;不需要eval所需的引號和字符串;在回調函數中命令的句法變得十分簡單。使用獨立回調函數技術,越復雜的回調(函數)越簡單。

  獨立回調函數的缺點是:需要很大數目的M文件以實現一個含有若干控制框和菜單項的GUI函數,所有這些M文件必須在MATLAB路徑中可得,且每一個文件又必須要有一個不同的文件名。在對文件名大小有限制且對大小寫不敏感的平臺上,如MS-windows,文件沖突的機會就增加了。而且回調函數只能被GUI函數調用而不能被用戶調用。

246931