[ 本帖最后由 ChaChing 于 2010-4-3 01:49 编辑 ] 怎么改呢 改为 & 和| 原帖由 boguslingo 于 2006-11-9 10:05 发表
我想问一下上面的高手,excel表里的字符变量怎么读入matlab里面呢,我在用matlab的统计工具,用决策树对数据分类,生成树。可是总是提示我变量错误,我也不知道怎么回事,请指教,谢谢。
这个应该可以通过dde通讯实现来实现,下面转一点DDE通讯的资料你可以参考做一下
Matlab中共有七个关于DDE通讯的函数:DdeInit, DdeTerm, DdeReq ,DdePoke,
DdeAdv,DdeUnadv,DdeExec,Matlab5.X中增加DdeMod , DdeModce , DdeCmp三个。
我们用到的一些函数的功能分别为:
l DdeInit函数建立与Server的对话,尽力成功则返回一个通道号。以后的操作均
对这个通道号进行。
l DdeTerm删除已建立的对话。
l DdeReq函数向Server索要数据,返回值是存有数据的矩阵。
l DdePoke函数向Server发送数据。
l DdeAdv,DdeUnadv分别是建立请求和删除请求。
几个函数参数意义近似相同,我们以函数DdeAdv为例介绍:
Rc=DdeAdv(Channel,Item,Callback,Upmtx,Format,Timeout)。
Rc:是返回值,0表示操作失败,1表示成功。
Chennel:是由ddeinit函数得到的通道号。
Item:是DDE会话的主题。即同样的客户和服务器可以同时交换不同含义的数
据,或者理解成子通道号。
Callback:是回调函数,及服务器端一旦数据变化,要调用的函数。
Upmtx:是一个矩阵,它保存服务器送来的数据。如果这个矩阵名字是一个空
字符串,则建立一个温链。如果矩阵名字非空字符串,则建立一个热链。
Format:传送的数据格式。一般取,即基于CF-TEXT格式的数据。
Timeout:如果在Timeout指定的时间里还没有建立起热链,则返回0。
服务器的数据应以CF-TEXT格式存放,如:服务器中以字符串:' 13.
1\r\n12.2\r\n 14.3 \r\n'存放的数据,Matlab收到的矩阵为:
Upmtx=
下面是Matlab一热链方式与服务器连接的程序清单:
Channel=DdeInit('MyDde',DDESERVER');
RC=DdeAdv(Channel,'DDEServerItem1','disp(x)','x',);
Pause;
RC=DdeUnadv(Channel,'DDEServerItem1',);
RC=DdeTerm(Channel);
该程序与服务器建立热链后进入暂停状态(pause语句),服务器一旦有数据产生
(即F8:0,F8:1,F8:20一旦变化),则x矩阵存储该数据,并执行显示函数Disp(X),把
X显示在工作区中。这种运行方式有些类似于低级语言的"中断方式"。在实际运用
中,Disp(X)函数可以换成任意复杂的数据处理函数以及控制,如: 任意复杂的数
据处理函数以及控制。Pause可以换成其它并行操作的程序。如:运行Simulink中
的文件,以及我们自己编写控制算法等,特别是当需对F8:20进行写操作时,我们
可以在Pause处:加入下一句:
RC=DdePoke(Channel,'DDEServerItem1',data,,timeout)
进行在线仿真时,建议用Simulink来进行,如果需自己编写控制算法可以把算法做
成.S函数,这样可以充分利用Simulink的可视化开发环境以及Matlab中的丰富资源
。
f8:20为plc通讯程序的地址,也是dde服务器的一个item.
页:
1
[2]