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

學(xué)習(xí)啦 > 知識大全 > 知識百科 > 百科知識 > matlab中獨立回調(diào)函數(shù)是什么

matlab中獨立回調(diào)函數(shù)是什么

時間: 歐東艷656 分享

matlab中獨立回調(diào)函數(shù)是什么

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

  獨立的回調(diào)函數(shù)

  建立GUI函數(shù)的一個有效方法是編寫?yīng)毩⒌幕卣{(diào)函數(shù),專門執(zhí)行一個或多個回調(diào)。函數(shù)使用的對象句柄和其它變量可以作為參量傳遞,必要時回調(diào)函數(shù)可返回值。

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

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

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

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

  回調(diào)函數(shù)本身如下:

  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é)省很多代碼,但卻得到了用函數(shù)而不用腳本文件的優(yōu)點:回調(diào)函數(shù)可以利用臨時變量,而不使命令窗口工作空間擁擠;不需要eval所需的引號和字符串;在回調(diào)函數(shù)中命令的句法變得十分簡單。使用獨立回調(diào)函數(shù)技術(shù),越復(fù)雜的回調(diào)(函數(shù))越簡單。

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

246931