1

我正在制作一个 matlab 文件来分析飞机的性能。我想要做的是查看多余功率最大的位置以及多余功率最小的位置。我能够使 matlab 不考虑超过 Clmax 的值(通过使用NaN)。
现在我想对多余的功率做同样的事情:我不希望我的等高线图显示 PS 的负值。我尝试像使用 Cl 一样做同样的事情,但没有成功。

这是到目前为止的代码:

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 变为 的 sigma 和 v_temp 值0。这将导致我达到最大巡航高度。

我是 matlab 新手,这段代码中的所有内容都是通过在互联网上查找和查看 youtube 电影来完成的。任何反馈将不胜感激!我找到了这个:

    data( indices_to_data_not_to_plot )  = NaN;
    surf(x,y,data);  %# or whatever you're using

在另一个主题中,但我猜这是我尝试过的东西,它不起作用,除了我使用轮廓而不是冲浪。

4

1 回答 1

1

一段简单的代码来澄清我在上面的评论中所说的话。这会创建一个波浪形的 2D 图案(2Dsinc函数),然后在不同级别添加轮廓 - 有时通过强制轮廓级别,有时通过强制数据。

% contour example
x = linspace(-10,10,20); y=x;
[xx yy]=meshgrid(x,y);
r = sqrt(xx.^2+yy.^2);
z = sin(r)./r;
figure
subplot 121
imagesc(x,y,z); axis xy; axis image
colormap gray
hold all
contour(x,y,z,0:0.1:1,'r')
contour(x,y,z,[0 0],'b') % blue line at "good" zero
zclip = z;
zclip(z<0)=0;
contour(x,y,zclip,[0 0],'g') % green line at "clipped" zero

subplot 122
imagesc(x,y,z); axis xy; axis image
colormap gray
hold all
contour(x,y,z,'w')

这会产生以下输出:

在此处输入图像描述

如您所见,0:0.1:1在第一个contour命令中使用向量只会绘制正轮廓(红色,来自'r');在第二次调用中使用[0 0]作为轮廓规范会导致在;'b'处绘制蓝色 ( ) 轮廓。z==0但是当我实际上将负数据设置为零时,我得到了参差不齐的第三个轮廓(绿色)。这是因为当没有真正的“交叉”时,很难“估计过零”......

在右侧,您会看到“常规”等高线绘图的结果,白色等高线位于“默认”间距。

注意 - 我绘制了强度图以显示它是如何完成的,但显然你可以在不先显示强度图的情况下绘制等高线图......

请使用上面的示例作为改进您的问题的起点(您可以运行的完整代码,它显示了问题和解决方案的方法) - 然后我们将能够为您提供更相关的答案。

快乐编码。

于 2013-05-30T20:50:59.810 回答