在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 6766|回复: 1

Matlab:vb如何调用m文件

[复制链接]
发表于 2009-5-20 20:25:15 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
本帖最后由 eecsseudl 于 2013-4-29 10:04 编辑

Matlab:vb如何调用m文件


我在网上查了,有好几种方法,有一种是说把m文件换成dll文件再调用,但必须在原有m程序中加上function函数,这个我还真的不知道怎么加。有哪位对vb如何调用m文件的知识比较熟悉的话,指点指点吧!
或者说有没有其他方法?给个步骤什么的吧。谢谢咯……
(我的m源程序)
%Single Neural Adaptive PID Controller
clear all;
close all;
clc;
x=[0,0,0]';
K=0.03;  
xiteP=2000;
xiteI=0.045;
xiteD=10;
%Initilizing kp,ki and kd
kp_1 =0.4565;
ki_1 = 0.0185;
kd_1 =0.8214;

sys=tf(0.08,[64000,4800,120,1,0],'inputdelay',2);
dsys=c2d(sys,1,'zoh');
[num,den]=tfdata(dsys,'v');
u_1=0;u_2=0;u_3=0;u_4=0;u_5=0;u_6=0;
y_1=0;y_2=0;y_3=0;y_4=0;
error_1=0;error_2=0;
ts=1;
for k=1:1:7000
time(k)=k*ts;
rin(k)=sin(0.1*pi*k*ts);
rin(k)=1;
    yout(k)=-den(2)*y_1-den(3)*y_2-den(4)*y_3-den(5)*y_4+num(2)*u_3+num(3)*u_4+num(4)*u_5+num(5)*u_6;
    error(k)=rin(k)-yout(k);
   
   kp(k)=kp_1+xiteP*error(k)*u_1*(2*error(k)-error_1);
   ki(k)=ki_1+xiteI*error(k)*u_1*(2*error(k)-error_1);
   kd(k)=kd_1+xiteD*error(k)*u_1*(2*error(k)-error_1);
  
   
   x(1)=error(k)-error_1;             %P
   x(2)=error(k);                     %I
   x(3)=error(k)-2*error_1+error_2;   %D
   wadd(k)=abs(kp(k))+abs(ki(k))+abs(kd(k));
   w11(k)=kp(k)/wadd(k);
   w22(k)=ki(k)/wadd(k);
   w33(k)=kd(k)/wadd(k);
   w=[w11(k),w22(k),w33(k)];
u(k)=u_1+K*w*x;     %Control law
if u(k)>100
   u(k)=100;
end   
if u(k)<-100
   u(k)=-100;
end   
  
error_2=error_1;
error_1=error(k);
   
%Update parameters
u_6=u_5;u_5=u_4;u_4=u_3;u_3=u_2;u_2=u_1;u_1=u(k);
y_4=y_3;y_3=y_2;y_2=y_1;y_1=yout(k);
   
kp_1=kp(k);
kd_1=kd(k);
ki_1=ki(k);
end
figure(1);
plot(time,rin,'b',time,yout,'r');
xlabel('time(s)');ylabel('rin,yout');
figure(2);
plot(time,error,'r');
xlabel('time(s)');ylabel('error');
figure(3);
plot(time,u,'r');
xlabel('time(s)');ylabel('u');
figure(4);
subplot(411);
plot(time,kp,'r');
xlabel('time(s)');ylabel('kp');
subplot(412);
plot(time,ki,'r');
xlabel('time(s)');ylabel('ki');
subplot(413);
plot(time,kd,'r');
xlabel('time(s)');ylabel('kd');







头像被屏蔽
发表于 2009-5-21 12:03:11 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /1 下一条


小黑屋| 手机版| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-11-19 18:45 , Processed in 0.018801 second(s), 10 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表