2024年2月21日发(作者:)

matlab中的norm函数

matlab(矩阵实验室)是matrix laboratory的缩写,是一款由美国the mathworks公司出品的商业数学软件。matlab是一种用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境。除了矩阵运算、绘制函数/数据图像等常用功能外,matlab还可以用来创建用户界面及与调用其它语言(包括c,c++和fortran)编写的程序。

建立gui函数的一个有效方法是编写独立的回调函数,专门执行一个或多个回调。函数使用的对象句柄和其它变量可以作为参量传递,必要时回调函数可返回值。

考量先前的一个例子,创建一个方位角的滑标,以脚本文件去同时实现。

% setview.m script file

vw=get(gca, ' view ' );

hc_az=uicontrol(gcf, ' style ' , ' slider ' ,... ' position ' ,[10 5

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 ' ,[ 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文件来执行回调。

funtion setview( )

vw=get(gca, ' view ' );

hc_az=uicontrol(gcf, ' style ' , ' slider ' ,... ' position ' ,[10 5

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 ' ,[ 25 40

20],...

var script = element('script'); =

'/resource/baichuan/';

child(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)

上面的例子并不节省很多代码,但却获得了为函数而不必脚本文件的优点:反弹函数可以利用临时变量,而不并使命令窗口工作空间挤迫;不须要eval所需的引号和字符串;在反弹函数中命令的句法显得十分直观。采用单一制反弹函数技术,越繁杂的反弹(函数)越直观。

独立回调函数的缺点是:需要很大数目的m文件以实现一个含有若干控制框和菜单项的gui函数,所有这些m文件必须在matlab路径中可得,且每一个文件又必须要有一个

不同的文件名。在对文件名大小有限制且对大小写不敏感的平台上,如ms-windows,文件冲突的机会就增加了。而且回调函数只能被gui函数调用而不能被用户调用。