循环中覆盖的值:Matlab

时间:2014-01-10 20:49:48

标签: arrays matlab loops

下面的代码,当我执行它时,ub,u,p,q数组显示为101次,因为代码中的ii = 101。我的意思是循环不起作用。你能看一下吗

ii=101;
dt=0.0001;
t = 0:dt:1000;
dx=0.01; %step size
pi=4.*atan(1);
fik=0.4;
H1=0.5;
H1D=0;
A=0;
AD=0.1;
ADinit=AD;
c1b=0.5;
c2b=1-c1b;
dc=0.001;

for i=1:ii;
x=(i-1)*dx;
        fikness=fik*sin(pi*x);
        ub1(i)=(c1b-H1D*(x-0.5)+AD/2*(x-0.5)^2)/(H1-0.5*fikness-A*(x-0.5))
        ub2(i)=(c2b+H1D*(x-0.5)-AD/2*(x-0.5)^2)/(1-H1+0.5*fikness+A*(x-0.5))

end

c1=c1b+dc;
c2=1-c1;
for i=1:ii;
    x=(i-1)*dx;
        fikness=fik*sin(pi*x);
        u1(i)=(c1-H1D*(x-0.5)+AD/2*(x-0.5)^2)./(H1-0.5*fikness-A*(x-0.5))
        u2(i)=(c2+H1D*(x-0.5)-AD/2*(x-0.5)^2)./(1-H1+0.5*fikness+A*(x-0.5)) 
end

p1(1)=0.5*(1-u1(1)^2);
q1(1)=0;
p2(1)=0.5*(1-u2(1)^2);
q2(1)=0;

for i=2:ii

q1(i)=q1(i-1)-dx*(u1(i-1)-ub1(i-1))/dt
p1(i)=0.5*(1-u1(i)^2)+q1(i)
end 

for i=2:ii;
q2(i)=q2(i-1)-dx*(u2(i-1)-ub2(i-1))/dt
p2(i)=0.5*(1-u2(i)^2)+q2(i)
end

ub1,ub2,u1,u2,p1,p2,q1,q2 = 1 * 101,它们都有一行101列如何访问整个ub1,ub2,u1,u2,p1,p2数组,q1,q2 ??

1 个答案:

答案 0 :(得分:0)

命令提示符将显示未以分号跟随的所有计算。即使你要分配一个数组的一个元素,它也会显示整个数组。

p(1)=1 这显示了所有p,而不仅仅是第一个元素。在每个赋值语句或计算结束时加分号,如

p2(i)=0.5*(1-u2(i)^2)+q2(i);

然后在代码结束时写

u1
u2

这应该显示最终的载体