求助:分岔图matlab程序赐教指正!
function dc2dc2sim;fff=inline([');',...
'exp(-2083.3333*0.0001*(1-mod(tn,0.0001)/0.0001)*[(2083.3333*0.001*()+10-vn*exp(-2*2083.3333*tn))/(9363.4188*0.001)*sin(9363.4188*0.0001*(1-mod(tn,0.0001)/0.0001))+(iref-10/20)*cos(9363.4188*0.0001*(1-mod(tn,0.0001)/0.0001))]+10/20]'],...
'vn','in','tn','iref'); %%% fff=inline(['vn+1的表达式','in+1的表达式'],'vn','in','tn','iref')
kk=0.5:0.1:5.5;
nn=0:0.0001/10:0.0001; %%%%%T=100us
xc=[];kc=[];
for iref=kk; %%%i以ref 从0.5到5.5变化为参考作vn的分岔图;
vn=0;
in=0;
for tn=nn;
for p=1:500;
in=fff(vn,in,tn,iref);
end
for p=1:50;
in=fff(vn,in,tn,iref);
xc=;
kc=;
end
end
end
plot(kc,xc,'k.','markersize',2); %%%%打印以Iref为变化参数的电流分岔图。
请版主、 superliu各位研友赐教问题所在,分岔图做不出来啊!谢谢! for p=1:500;
in=fff(vn,in,tn,iref);
end
这个循环的意思难道是去除前面的500次迭代数据?
是啊,我是参考一些程序写的,请octopussheng版主看看有什么问题?
function boost1;fff=inline('0.8872*x+1.2*16^2*(0.2874-k*(x-25))^2/(x-16)','x','k');
x0=25;
kk=0.07:0.0001:0.138;
xc=[];kc=[];
for k=kk;
x=x0;
for p=1:150;
x=fff(x,k);
end
for p=1:50;
x=fff(x,k);
xc=;
kc=;
end
end
plot(kc,xc,'k.','markersize',2)
这段程序的分岔图在matlab中是正确的,octopussheng版主可以在matlab中看看!
我是就参考这个程序写的!!! 问题出在“fff=inline”函数上面,建议你用一般函数表示,
即类似于的表达式;
V(n+1)=f(V(n),I(n));
I(n+1)=g(V(n),I(n));
此处f(),g(),就是你的函数
这样做肯定可以作出图来的; function dc2dc2sim;
vi=10;
L=0.001;
C=0.000012;
T=0.000100;
R=20;
k=1/(2*R*C);
w=sqrt(1/(L*C)-k^2);
kk=0.5:0.1:5.5;
nn=0:0.0001/10:0.0001;
xc=[];kc=[];
for iref=kk;
vn=0;
in=0;
for tn=nn;
for p=1:150;
tnbo=T*;
vn=vi-exp(-k*tnbo)*[(k*vn*exp(-2*k*tn)-k*vi-(iref-vi/R)/C)*sin(w*tnbo)/w+(vi-vn*exp(-2*k*tn))*cos(w*tnbo)];
in=exp(-k*tnbo)*[(k*L*(iref-vi/R)+vi-vn*exp(-2*k*tn))/(w*L)*sin(w*tnbo)+(iref-vi/R)*cos(w*tnbo)]+vi/R;
end
for p=1:100;
tnbo=T*;
vn=vi-exp(-k*tnbo)*[(k*vn*exp(-2*k*tn)-k*vi-(iref-vi/R)/C)*sin(w*tnbo)/w+(vi-vn*exp(-2*k*tn))*cos(w*tnbo)];
in=exp(-k*tnbo)*[(k*L*(iref-vi/R)+vi-vn*exp(-2*k*tn))/(w*L)*sin(w*tnbo)+(iref-vi/R)*cos(w*tnbo)]+vi/R;
xc=;
kc=;
end
end
end
plot(kc,xc,'k.','markersize',2)
重新修改的程序为什么分岔图不正确啊,请版主研友帮忙啊!!! 先谈一下个人的一点看法哈
kk=0.5:0.1:5.5;
nn=0:0.0001/10:0.0001;
这两句话定的步数会不会少了点呀?
能否考虑把plot(kc,xc,'k.','markersize',2)
放到for循环里面呢? 我倒觉得这里有问题
for p=1:150;
tnbo=T*;
vn=vi-exp(-k*tnbo)*[(k*vn*exp(-2*k*tn)-k*vi-(iref-vi/R)/C)*sin(w*tnbo)/w+(vi-vn*exp(-2*k*tn))*cos(w*tnbo)];
in=exp(-k*tnbo)*[(k*L*(iref-vi/R)+vi-vn*exp(-2*k*tn))/(w*L)*sin(w*tnbo)+(iref-vi/R)*cos(w*tnbo)]+vi/R;
end
for p=1:100;
tnbo=T*;
vn=vi-exp(-k*tnbo)*[(k*vn*exp(-2*k*tn)-k*vi-(iref-vi/R)/C)*sin(w*tnbo)/w+(vi-vn*exp(-2*k*tn))*cos(w*tnbo)];
in=exp(-k*tnbo)*[(k*L*(iref-vi/R)+vi-vn*exp(-2*k*tn))/(w*L)*sin(w*tnbo)+(iref-vi/R)*cos(w*tnbo)]+vi/R;
xc=;
kc=; for iref=kk;%iref从现在从0.5到5.5
vn=0;
in=0;
for tn=nn;%tn从0到T
......
end
end
end
plot(kc,xc,'k.','markersize',2)
这两个循环行不行啊,特别是时间tn从0到T这样循环不知道行不行,两位版主花点时间帮我看看,谢谢!
回复 #7 咕噜噜 的帖子
而且前面说略去前面的迭代数据,感觉循环里面并没有略去呀!,不知道小咕是什么看法 我估计是这条有问题for tn=nn;
。。。。
end
你的函数和tn,tn'都有关系,而且此处的“n”和“vn,in”是有关系的
总的说来,你的函数关系还是没有表示清楚。
在此循环范围内;
for p=1:150;
完整的函数关系表达式;
end
for p=1:100;
完整的函数关系表达式;
xc=;
kc=;
end
其实你的程序结构没有问题,只是函数关系没有表示清楚,耐心检查一下。
分岔图及变换器系统原理图
要得到的分岔图如附件中的图1;变换器系统图如附件中的图2,tn和tn'的关系如图;
在matlab中tn和tn'的函数关系不知如何正确表达完整的函数关系表达式;iref循环可以从0.5~5.5变化,但tn好象不知如何变化才能够作出如图的分岔图; tn是一个状态转换周期开关闭合的时间,tn'是该状态转换周期开关断开的时间,
从上图中可以看出:当iiref<=in时,开关闭合,时间为tn;当iiref>=in时,开关打开,时间为tn‘。
不知在matlab中tn循环 以及函数如何表达。
分岔图是参考电流iref和电感电流in的关系,iref从0.5~5.5变化
分岔图是参考电流iref和电感电流in的关系,iref从0.5~5.5变化 tnbo=T*;这句表示什么意思?和(3.9)式写法什么有出入? 从你的解释看来在某个时刻tn和tn’只有一个起作用,剩下的就是想办法,表示tn和tn’之间的这种关系。
页:
[1]
2