求delphi调用matlab6.5编译的dll的方法,要求传递和返回数组,图形调用,运行时不需要matlab平台(211分倾家荡产)(211分)

  • 主题发起人 主题发起人 ff10
  • 开始时间 开始时间
F

ff10

Unregistered / Unconfirmed
GUEST, unregistred user!
急用,用matcom也可以,要求附上delphi代码和matlab代码
 
?delphi能直接调用matlab6.5编译的dll吗?
我用matcom+vc把matlab程序编译成dll或exe,但matcom对matlab某些函数不支持,
必须要试。
我做的是控制系统的运算,其主要用到的matlab函数程序如下
%ji suan chan han
[a,b,c,d]=tf2ss((k*k1,[t0*t1,t0,k*k1]);
lear;%
x=[0 0]';%初值
cA=a;%连续状态方程

cB=b;
u=1;%控制量
dt=0.01;%离散时间


[dA,dB]=c2d(cA,cB,dt);%经离散化得到离散状态方程
fid6=fopen('c:/my documents/txt/ejxt_t.txt','wt');
fid2=fopen('c:/my documents/txt/ejxt_y.txt','wts');
for i=1:1000;
record(:,i)=dA*x+dB*u;%运行1000步,得到系统运动轨迹
x=record(:,i);
y=c*x;
tt(i)=i*dt;
z=i*dt;
%shu chu shu ju
fprintf(fid1,'%f/n',t);
fprintf(fid2,'%12.8f/n',y);
形成一个ejxt.exe文件,delphi中调用,数据用临时文件传递
shellexecute(handle,nil,pchar('ejxt'),nil,nil,sw_hide);
读入数据
assignfile(outputfile,'c:/my documents/txt/ejxt_t.txt');
reset(outputfile);
for i:=1 to 801 do //读800个数据
begin
readln(outputfile,m);
h:=strtofloat(m);
end;
closefile(outputfile);

 
谢谢,但这样不行,我听说有人实现了,但不知道他是怎么实现的
 
没人回答?
还是我把分数回收吧!
 
后退
顶部