标题:求助:Matlab遇到难题
只看楼主
zlguo007
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2007-3-30
 问题点数:0 回复次数:11 
求助:Matlab遇到难题

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

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)


搜索更多相关主题的帖子: Matlab 难题 
2007-03-30 14:32
尘埃122
Rank: 5Rank: 5
等 级:贵宾
威 望:16
帖 子:127
专家分:0
注 册:2006-8-31
得分:0 
呵呵,稍微调试了下,发现楼主程序中几个小问题:

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

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

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





2007-03-30 15:26
zlguo007
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2007-3-30
得分:0 
  谢谢,能把你调完的程序给我发一份么?
2007-03-30 15:30
尘埃122
Rank: 5Rank: 5
等 级:贵宾
威 望:16
帖 子:127
专家分:0
注 册:2006-8-31
得分:0 
    呵呵,已发送至邮箱,请查收

2007-03-30 15:47
zlguo007
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2007-3-30
得分:0 
麻烦你把程序发到zlguo007@sina.com,我的那个邮箱不能用了,谢谢你了
2007-03-30 16:00
zlguo007
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2007-3-30
得分:0 

发现程序有点问题,哪位大虾再给帮忙调试一下吧,有急用谢谢
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)


2007-03-30 16:50
尘埃122
Rank: 5Rank: 5
等 级:贵宾
威 望:16
帖 子:127
专家分:0
注 册:2006-8-31
得分:0 
  已发送至新浪邮箱,请查收

2007-03-30 19:06
zlguo007
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2007-3-30
得分:0 
谢谢你
为什么还是不行呀,第8句说Kp没有定义,麻烦大虾们帮帮忙,给我弄好!!!
2007-03-30 20:31
尘埃122
Rank: 5Rank: 5
等 级:贵宾
威 望:16
帖 子:127
专家分:0
注 册:2006-8-31
得分:0 
呵呵,我这能跑通,Kp只是一个传入参数,不应该有没定义的情况才是

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

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


2007-03-31 16:20
zlguo007
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2007-3-30
得分:0 
可是我在M文件调试下就出现问题:
??? Input argument "kp" is undefined
Error in ==> C:\MATLAB6p5\work\Ufun.m
On line 9 ==> Un(1)=Kp;
请问你是怎么弄的,告诉我一下,十分感谢!!!
2007-03-31 17:47



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-128098-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.049688 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved