matlab中怎么写levy函数

matlab中怎么写levy函数,第1张

function levy(n)

% levy(16),n为levy曲线迭代次数

%x1,y1,x2,y2为初始线段两端点坐标,nn为迭代次数

n=16

x1=0y1=0

x2=1y2=0

%第i-1次迭代时由各条线段产生的新两条线段的三端点横、纵坐标存储在数组X、Y中

[X,Y]=levy1(x1,y1,x2,y2)

for i=1:n

for j=1:length(X)/3

w=levy2(X(1+3*(j-1):3*j),Y(1+3*(j-1):3*j))

[XX(3*2*(j-1)+1:3*2*(j-1)+3),YY(3*2*(j-1)+1:3*2*(j-1)+3)]=levy1(w(1,1),w(1,2),w(1,3),w(1,4))

[XX(3*2*(j-1)+3+1:3*2*(j-1)+3+3),YY(3*2*(j-1)+3+1:3*2*(j-1)+3+3)]=levy1(w(2,1),w(2,2),w(2,3),w(2,4))

end

X=XX

Y=YY

end

plot(X,Y)

hold on

axis equal

%由以(x1,y1),(x2,y2)为端点的线段生成新的中间点坐标并把(x1,y1),(x2,y2)连同新点横、纵坐%标依次分别存储在数组X,Y中

function [X,Y]=levy1(x1,y1,x2,y2)

x3=1/2*(x1+x2+y1-y2)

y3=1/2*(-x1+x2+y1+y2)

X=[x1,x3,x2]

Y=[y1,y3,y2]

%把由函数levy1生成的三点横、纵坐标X,Y顺次划分为两组,分别对应两条折线段中每条线%段两端点的坐标,并依次分别存储在2*4阶矩阵w中,w中第i(i=1,2)行数字代表第i条线段%两端点的坐标

function w=levy2(X,Y)

a11=X(1)b11=Y(1)

a12=X(2)b12=Y(2)

a21=X(2)b21=Y(2)

a22=X(3)b22=Y(3)

w=[a11,b11,a12,b12a21,b21,a22,b22]

用LabVIEW和Matlab混合编程技术可以实现,具体有以下几种方法

一、基于动态数据交换(DDE)技术

动态数据交换是Windows *** 作系统中一种基于消息的协议,用于在Windows平台上的两个正在运行的应用程序之间动态交换数据,其中提供数据服务的程序称为服务器程序(DDE Server),请求数据和服务的程序称为客户程序(DDE Client).LabVIEW提供了DDE通信VI,利用这些VI可以创建DDE Server或DDE Client,完成接收/发送数据、请求/提供服务等功能。LabVIEW调用Matlab功能时,需将服务名(service name)指定为”Matlab”,主题名(Topic Name)指定为”Engine”,同时在运行VI之前先启动Matlab或者Matlab计算引擎(在内存中均为Matlab.exe),否则无法通信。DDE VIs可在<LabVIEW>\vi.lib\platform\dde.llb下找到。

二、基于动态链接库(DLL)技术

动态连接库是基于Windows程序设计的一个重要组成部分,它由一系列封装好的可执行代码组成,其内部函数能被其他程序所共享。LabVIEW通过CLF(Call Library Function Node)实现对DLL的调用。另一方面,Matlab编译器能将函数文件编译C/C++代码,这些代码又能被C/C++编译器(如Microsoft Visual C++ 6.0)编译成DLL文件,只要接口(输入输出参数)安排正确,就可以将Matlab编写的算法集成到LabVIEW应用程序中,且脱离了Matlab运行环境,执行效率高。另外,Math works公司为Microsoft Visual C++ 6.0提供了一个插件,可以轻松完成上述工作,当然接口还需开发人员自己安排。CLF在函数面板的“Advanced”子模板下。

三.基于组件对象模型(COM)技术

组件对象模型的核心就是二进制接口规范,此规范独立于编程语言和 *** 作系统。从6.5版本开始,Matlab提供了COM生成器。COM生成器提供了实现Matlab独立应用的一种新途径。它能把Matlab开发的算法做成组件,这些组件作为独立的COM对象,可直接被Visual Basic,Visual C++或其他支持COM的语言所引用[1]。LabVIEW5.0及以上版本支持COM。它通过自动化标识(automation refnum)获取一个已安装在系统中的COM组件的引用,然后借助ActiveX功能子模板中的VI完成对组件的控制和调用工作。利用COM技术的LabVIEW和Matlab无缝集成的应用程序运行效率高,占有系统资源少,而且非常利于用户应用软件的发布。[2]

四.基于ActiveX自动化技术

ActiveX的自动化(automation)是ActiveX最重要的功能之一,是一个程序借助其方法和属性控制另一程序的能力,它包括自动化服务器和自动化控制器。Matlab支持ActiveX自动化技术。Matlab自动化服务器提供一系列方法和属性,借此可以实现在其他应用程序中执行Matlab命令和控制Matlab。LabVIEW5.0及以后的版本提供对ActiveX自动化的支持。在LabVIEW中基于ActiveX实现和Matlab混合编程的方法又有两种,第一种使用Matlab脚本节点,第二种使用ActiveX函数模板。两种方法的基本过程都相同――先打开Matlab自动化服务器,然后执行Matlab命令,最后关闭自动化服务器。LabVIEW中与ActiveX有关函数模板在函数面板中“communication”子面板下的”ActiveX”面板中。

五.其他方法

还有一种将DLL和Matlab计算引擎(基于COM技术)结合起来的方法。这种方法把调用Matlab计算引擎的C代码编译成DLL供LabVIEW调用。Matlab计算引擎采用了客户机/服务器的模式,在windows上通过ActiveX通道与Matlab进行连接,因此这种方法与基于ActiveX自动化技术的方法有些类似。在进行混合编程时,先打开Matlab计算引擎,然后执行Matlab命令,最后关闭Matlab计算引擎。所不同的是使用ActiveX自动化技术传递数据均为变体,数据类型由应用程序和Matlab服务器自动匹配,而通过DLL调用Matlab计算引擎的方法即可传递变体类型数据也可传递标准C类型数据,数据类型之间的转换在DLL中完成,因此需开发人员额外编程。除了上述混合编程方法外,NI公司和Math works公司合作推出一个工具包――SIT(Simulation Interface Toolkit),用来实现LabVIEW和Simulink交互式编程。有了这一工具包,设计工程师们可以建立自定义的用户界面,以便交互式地验证Simulink模型,并轻松地将这些模型配置到实时硬件进行控制原型设计和硬件在环(hardware-in-the-loop)测试,最终节省产品上市时间。但如其名,它仅用于和Simulink通信,且为附加软件需额外购买。

1、matlab是一个功能强大的软件,不仅仅在数据处理方面很优秀,在界面编程方面同样优秀,这里简单介绍下matlab界面编程的基础步骤。

2、在打开的matlab程序中,点击new---graphic user interface,打开创建gui向导--我们选择blank gui,创建空白的gui界面---选择左侧我们需要的控件,如下图,我们选择一个button---将控件拖入到gui界面的合适的位置,双击打开设置属性的界面---设计好界面后,我们先不要编写函数内容,先运行界面---他会提醒我们激活界面将保存界面和代码,我们选择yes---输入文件名,点击保存---我们回到界面编辑界面,点击button右键打开右键菜单,点击view callbacks---callback,来跳转到该控件的回调函数---我们在该函数中输入代码---这时,我们运行程序,点击按钮,即可以在命令窗口中看到button执行的效果。

3、先运行界面,使得matlab给我们创建界面的代码,然后在view callback。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11383751.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-15
下一篇 2023-05-15

发表评论

登录后才能评论

评论列表(0条)

保存