我正在制作一个matlab文件来分析飞机的性能。我想要做的是看看多余的功率在哪里是最大的,以及多余功率最小的地方。我能够使matlab没有考虑超过Clmax的值(通过使用NaN
)。
现在我想对多余的功率做同样的事情:我不希望我的轮廓图显示PS的负值。我尝试着和Cl一样做,但没有成功。Matlab不显示负值
这到目前为止的代码:
TA= 667233.2;
W=228000;
S=360;
CDO=0,02;
b=60;
AR=10;
h=0;
v= [60:10:350]
hoogte= [0:1000:17000]
%TEST
for j=1:length(hoogte)
hoogte_temp = hoogte(j)
[rho c] = Atmos(hoogte_temp)
sigma= rho/1.225
for i= 1:length(v)
v_temp = v(i);
q= rho*v_temp*v_temp/2
cl(i,j) = W*9.81/S/q
if (cl<1.91)
cd(i,j) = 0.02 + cl(i,j)^2/(AR*3.14*0.8)/beta(i)
D(i,j)= cd(i,j)*q*S
PS(i,j)=(TA*sigma-D(i,j))*v_temp/(W*9.81)
else %als Cl groter is dan 1,91: niet weergeven, ook niet Cd, D en ook niet Ps
cl(cl>1.91) = NaN;
cd(i,j)= NaN;
D(i,j)=NaN;
PS(i,j)=NaN;
end
if(v_temp/c<1)
beta(i)=sqrt(1-(v_temp/c)^2)
else
beta(i) = NaN
end
cd(i,j) = 0.02 + cl(i,j)^2/(AR*3.14*0.8)/beta(i)
D(i,j)= cd(i,j)*q*S
PS(i,j)=(TA*sigma-D(i,j))*v_temp/(W*9.81)
end
我想到的只是增加一个if (PS<0)
甚至if PS<=D PS=NaN
,但似乎并没有工作,如果我重新运行该程序,并期待在曲线图。
atmos.m
文件是我在大气及其属性(如温度,海拔高度和密度)变化时所制作的文件。
我现在想要做的事情:
取消负PS值,找到PS变为0
的sigma和v_temp值。这会导致我进入最大巡航高度。
我是matlab新手,这段代码中的所有内容都是通过查找互联网和看YouTube视频完成的。任何反馈将非常感激!我发现这一点:
data(indices_to_data_not_to_plot) = NaN;
surf(x,y,data); %# or whatever you're using
在另一个话题,但它是我试过的事情,我想,这是不行的,除非我用的轮廓,而不是冲浪。
你的例子不起作用,因为我没有'atmos'。您可以禁用NaN分配并在pastebin.com'disp(PS)'输出中显示吗? –
欢迎来到SO!看来你在这里问了很多问题。您可以通过一个简单的问题获得更好的帮助,并且可以运行代码(尽可能简短,包括所有需要的数据)。同时,'contour(x,y,data,[0 1.5 3])'会在'data == 0,data == 1.5等等处创建等值线。这可能对您有帮助吗?它不会忽略负数,但不会显示轮廓。这比将负值设置为零要好(这会导致插值出错)。请参阅我的答案中的示例(提供更多信息后必须对其进行改进)。 – Floris
我们能够弄清楚如何不显示Ps。感谢那!并感谢热烈的欢迎和答复。我明天将会看到disp(PS),因为它已经很晚了.-)!再次感谢! – user2437805