Matlab编写程序如下,但是运行时就是不显示图像曲线,X、y坐标也只有局部,求指导。

for i=1:40
ua=3*i+30;
K=1620*9.8*0.0165*(1+(0.01*(ua-50)));
L=(1.6*1.86*0.6*ua^2)/21.15;
A=((L+K)*0.2806)/4;
n=(ua*4)/(0.2806*0.377);
end
plot(n,A);

你的程序基本都是正确的,就是for循环结束之后,你的A,n,只有一个值,所以就画不出你要的那条直线,而只是最后的那一个点;

你只要把A,n改正向量的表示形式就好了!

for i=1:40

ua=3*i+30;

K=1620*9.8*0.0165*(1+(0.01*(ua-50)));

L=(1.6*1.86*0.6*ua^2)/21.15;

A(i)=((L+K)*0.2806)/4;

n(i)=(ua*4)/(0.2806*0.377);

end

plot(n,A);

温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-04-23

%for循环结束之后,A,n只有一个值,所以画出来是一个点;

%可以不用for循环,以加快运行速度,像你这种的for循环,如果要是大的话,

%可以使用matlabpool open 2打开MATLAB池,然后for改为parfor;

i=1:40;

ua=3*i+30;

K=1620*9.8*0.0165*(1+(0.01*(ua-50)));

L=(1.6*1.86*0.6*ua.^2)/21.15;%注意这儿(ua.^2)加了一个点!

A=((L+K)*0.2806)/4;

n=(ua*4)/(0.2806*0.377);

plot(n,A);

%结果的图如下:

第2个回答  2011-04-23
for循环结束之后,A,n,只有一个值,所以就画不出直线,而只是最后的那一个点。
简单的修改方法:

A=((L+K)*0.2806)/4;
n=(ua*4)/(0.2806*0.377);
改为
A(i)=((L+K)*0.2806)/4;
n(i)=(ua*4)/(0.2806*0.377);
就行了
第3个回答  2011-04-23
for i=1:40
ua=3*i+30;
K=1620*9.8*0.0165*(1+(0.01*(ua-50)));
L=(1.6*1.86*0.6*ua^2)/21.15;
A=((L+K)*0.2806)/4;
n=(ua*4)/(0.2806*0.377);
end
经过这个for循环后 n, A会是一个标量,就是一个数值,
你要显示曲线的话有两种方法,
1.for i=1:40
ua=3*i+30;
K=1620*9.8*0.0165*(1+(0.01*(ua-50)));
L=(1.6*1.86*0.6*ua^2)/21.15;
A=((L+K)*0.2806)/4;
n=(ua*4)/(0.2806*0.377);
plot(n, A);
hold on;
end
2.
n=zeros(1,40);
A=zeros(1,40);
for i=1:40
ua=3*i+30;
K=1620*9.8*0.0165*(1+(0.01*(ua-50)));
L=(1.6*1.86*0.6*ua^2)/21.15;
A(i)=((L+K)*0.2806)/4;
n(i)=(ua*4)/(0.2806*0.377);
end
plot(n,A);
第4个回答  2011-04-23
n=zeros(1,40);
A=zeros(1,40);
for i=1:40
ua=3*i+30;
K=1620*9.8*0.0165*(1+(0.01*(ua-50)));
L=(1.6*1.86*0.6*ua^2)/21.15;
A(i)=((L+K)*0.2806)/4;
n(i)=(ua*4)/(0.2806*0.377);
end
plot(n,A);
相似回答