注册 登录
编程论坛 Matlab

求助:Matlab遇到难题

zlguo007 发布于 2007-03-30 14:32, 1011 次点击

下列程序段调不通,哪位大虾帮忙调通,谢谢!!!

function [Un,y1,E1,edao1]=Ufun(in,Kp,K,k,tao,T1,T2)
syms t;
t1=0.1:0.1:10
Un=zeros(100,1);
E1=zeros(100,1);
y1=zeros(100,1);
edao1=zeros(100,1);
Un(1)=Kp;
G=K*(exp(-(t-tao)/T1)-exp(-(t-tao)/T2))/(T1-T2)
y1(1)=0;
E1(1)=1;
edao1(1)=-0.001
for i=1:99
e=in-Un(i)*G
edao=diff(e,t);
e1=subs(e,t,t1(i));
edao1(i+1)=subs(edao,t,t1(i));
if (abs(e1)>0)&(edao1(i)*edao1(i+1)<=0)
% if (abs(e1)>0)&(edao1(i+1)==0)
E1(i+1)=e1;
else
E1(i+1)=0
end
if (e1*edao1(i+1)>0)|((abs(e1)>0)&(edao1(i)*edao1(i+1)<=0))
% if (e1*edao1(i+1)>0)|((abs(e1)>0)&(edao1(i+1)==0))
Un(i+1)=Un(i)+Kp*e1;
else %if(e1*edao1(i+1)<0)|(e1==0)

Un(i+1)=k*Kp*sum(E1);
end
y=Un(i+1)*G;
y1(i+1)=subs(y,t,t1(i))
%end
end
end
% [Un,y1,E1,edao1]=Ufun(4,2,0.99,0.05,4,0.4)


11 回复
#2
尘埃1222007-03-30 15:26
呵呵,稍微调试了下,发现楼主程序中几个小问题:

1。楼主给的实参只有6个,而函数中参数有7个

2。函数中有几处语句后没加“;”,程序运行出现刷屏情况

将传递参数添加一个T2值,未加“;”的语句添上“;”,程序基本能运行出来,至于答案是不是楼主所需要的,就看楼主程序中的逻辑是否准确了




#3
zlguo0072007-03-30 15:30
  谢谢,能把你调完的程序给我发一份么?
#4
尘埃1222007-03-30 15:47
    呵呵,已发送至邮箱,请查收
#5
zlguo0072007-03-30 16:00
麻烦你把程序发到zlguo007@sina.com,我的那个邮箱不能用了,谢谢你了
#6
zlguo0072007-03-30 16:50

发现程序有点问题,哪位大虾再给帮忙调试一下吧,有急用谢谢
function [Un,t1,t2,y1,E1,edao1]=Ufun(in,Kp,K,k,tao,T1,T2)
syms t;
t1=0.1:0.1:10;
t2=0.1:0.1:10;
Un=zeros(100,1);
E1=zeros(100,1);
y1=zeros(100,1);
edao1=zeros(100,1);
Un(1)=Kp;
G=K*(exp(-(t-tao)/T1)-exp(-(t-tao)/T2))/(T1-T2);
y1(1)=0;
E1(1)=1;
edao1(1)=-0.001;
for i=1:99
e=in-Un(i)*G;
edao=diff(e,t);
e1=subs(e,t,t1(i));
edao1(i+1)=subs(edao,t,t1(i));
if (abs(e1)>0)&(edao1(i)*edao1(i+1)<=0)
% if (abs(e1)>0)&(edao1(i+1)==0)
E1(i+1)=e1;
else
E1(i+1)=0;
end
if (e1*edao1(i+1)>0)|((abs(e1)>0)&(edao1(i)*edao1(i+1)<=0))
% if (e1*edao1(i+1)>0)|((abs(e1)>0)&(edao1(i+1)==0))
Un(i+1)=Un(i)+Kp*e1;
else %if(e1*edao1(i+1)<0)|(e1==0)

Un(i+1)=k*Kp*sum(E1);
end
y=Un(i+1)*G;
y1(i+1)=subs(y,t,t1(i));
%end
end
end
% [Un,y1,E1,edao1]=Ufun(4,2,0.99,0.05,4,0.4)


#7
尘埃1222007-03-30 19:06
  已发送至新浪邮箱,请查收
#8
zlguo0072007-03-30 20:31
谢谢你
为什么还是不行呀,第8句说Kp没有定义,麻烦大虾们帮帮忙,给我弄好!!!
#9
尘埃1222007-03-31 16:20
呵呵,我这能跑通,Kp只是一个传入参数,不应该有没定义的情况才是

是得在主程序窗口调用,你不是直接运行吧?呵呵

[此贴子已经被作者于2007-3-31 16:37:51编辑过]

#10
zlguo0072007-03-31 17:47
可是我在M文件调试下就出现问题:
??? Input argument "kp" is undefined
Error in ==> C:\MATLAB6p5\work\Ufun.m
On line 9 ==> Un(1)=Kp;
请问你是怎么弄的,告诉我一下,十分感谢!!!
#11
zlguo0072007-04-01 20:29
麻烦各位大虾帮帮忙,急用的,给在下调通吧,谢谢了!!!
#12
abingchem2007-04-02 08:28
注意大小写的问题
1