我正在製作一個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