51Testing软件测试论坛

标题: matlab中迭代中加入循环的问题 [打印本页]

作者: sureough    时间: 2011-6-11 16:30
标题: matlab中迭代中加入循环的问题
我想问一下各位大侠,下面的程序如果v是一个值的话是可以运行的,就是通过迭代求a和b的收敛值,但是现在我想求v中每个元素对应的a、b值。不知道怎么加循环,还望各位大侠赐教!!!
clear;clc
v:%%%%   v是一个2000 x 1的向量
c=3.542;
AOA=[-180,0,180];
CL=[0,0,0];
CD=[0.5 0.5 0.5];
a(1)=0;
b(1)=0;
w=12.1*2*pi/60;
r=[2.7333];
i=1;
n=2000;
d=1;
B=3;
theta=0;
%for k=1:2000
%v=v(k);
    while (abs(d)>1e-6)
    phi(i)=atan(1-a(i))*v/((1+b(i))*w*r)*180/pi;
    f1(i)=1.5*(61.5-r)/r/sin(pi*phi(i)/180);
    F1(i)=2*acos(exp(-f1(i)))/pi;
    F(i)=F1(i);
    A(i)=phi(i)-0;
    cl(i)=interp1(AOA,CL,A(i));
    cd(i)=interp1(AOA,CD,A(i));
    cn(i)=cl(i)*cos(pi*phi(i)/180)+cd(i)*sin(pi*phi(i)/180);
    ct(i)=cl(i)*sin(pi*phi(i)/180)-cd(i)*cos(pi*phi(i)/180);
    delta=c*B/r/(2*pi);
    a(i+1)=1/((4*F(i)*sin(pi*phi(i)/180)*sin(pi*phi(i)/180)/cn(i)/delta)+1);
    b(i+1)=1/((4*F(i)*sin(pi*phi(i)/180)*cos(pi*phi(i)/180)/ct(i)/delta)-1);
     d=b(i+1)-b(i);
       i=i+1;
          if(i>n)error('n is full');
          return;
          end
    end
%end
a;
b;




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2