Plotting a multivariable function

5 ビュー (過去 30 日間)
Sazcl
Sazcl 2022 年 10 月 30 日
編集済み: KALYAN ACHARJYA 2022 年 10 月 30 日
Hi, I have a multivariable function as you can see down below. The function works perfect but I have a problem. I need to plot v_cal - v_true when a_ft is equal to 28000. However, when I tried to run the function, MATLAB asks me for v_cal and a_ft values. When I input these values, it plots the v_cal-v_true graph as a constant function. How can I fix this? Thanks in advance.
function v_true=CaltoTrue(a_ft,v_cal)
a=a_ft*0.3048;
b=-0.0065;
R=287.05287;
gr_0=9.80665;
p0=101325;
T0=288.15;
pr=p0*((T0+b*a)/T0)^(-gr_0/(b*R));
T=T0+b*a;
ad=pr/(R*T);
k=1.4;
nu=(k-1)/k;
ad_0=1.225;
v_true=(((((1+(nu*ad_0*(v_cal)^2)/(2*p0))^(1/nu)-1)*p0/pr+1)^nu-1)*(2*pr)/(nu*ad))^(1/2);
if a_ft==28000
v_cal=0:500;
fplot(v_true)
xlabel('V_Cal')
ylabel('V_True')
end
end

採用された回答

KALYAN ACHARJYA
KALYAN ACHARJYA 2022 年 10 月 30 日
編集済み: KALYAN ACHARJYA 2022 年 10 月 30 日
a_ft=28000;
v_cal=0:500;
CaltoTrue(a_ft,v_cal)
ans = 1×501
0 1.5762 3.1524 4.7285 6.3046 7.8806 9.4565 11.0323 12.6079 14.1833 15.7586 17.3336 18.9084 20.4830 22.0573 23.6312 25.2049 26.7782 28.3512 29.9238 31.4960 33.0678 34.6391 36.2100 37.7804 39.3503 40.9197 42.4885 44.0568 45.6245
function v_true=CaltoTrue(a_ft,v_cal)
a=a_ft*0.3048;
b=-0.0065;
R=287.05287;
gr_0=9.80665;
p0=101325;
T0=288.15;
pr=p0*((T0+b*a)/T0)^(-gr_0/(b*R));
T=T0+b*a;
ad=pr/(R*T);
k=1.4;
nu=(k-1)/k;
ad_0=1.225;
temp=nu*ad_0.*(v_cal).^2;
temp2=(1+temp/(2*p0)).^(1/nu)-1;
v_true=(((temp2.*p0/pr+1).^(nu)-1).*(2*pr)/(nu*ad)).^(1/2);
plot(v_true)
grid on;
xlabel('V_Cal')
ylabel('V_True')
end
#Not costant, there is a slight variation, please check the equation, it is more about digging those equations rather than matlab code.
  2 件のコメント
Sazcl
Sazcl 2022 年 10 月 30 日
a_ft=28000;
v_cal=0:500;
CaltoTrue(a_ft,v_cal)
ans = 1×501
0 1.5762 3.1524 4.7285 6.3046 7.8806 9.4565 11.0323 12.6079 14.1833 15.7586 17.3336 18.9084 20.4830 22.0573 23.6312 25.2049 26.7782 28.3512 29.9238 31.4960 33.0678 34.6391 36.2100 37.7804 39.3503 40.9197 42.4885 44.0568 45.6245
function v_true=CaltoTrue(a_ft,v_cal)
a=a_ft*0.3048;
b=-0.0065;
R=287.05287;
gr_0=9.80665;
p0=101325;
T0=288.15;
pr=p0*((T0+b*a)/T0)^(-gr_0/(b*R));
T=T0+b*a;
ad=pr/(R*T);
k=1.4;
nu=(k-1)/k;
ad_0=1.225;
temp=nu*ad_0.*(v_cal).^2;
temp2=(1+temp/(2*p0)).^(1/nu)-1;
v_true=(((temp2.*p0/pr+1).^(nu)-1).*(2*pr)/(nu*ad)).^(1/2);
plot(v_true)
grid on;
xlabel('V_Cal')
ylabel('V_True')
end
Thanks a lot, but I don't understand where exactly you wrote the first three lines of code. When I place it above the function, I get this error: Local function name must be different from the script name.
KALYAN ACHARJYA
KALYAN ACHARJYA 2022 年 10 月 30 日
編集済み: KALYAN ACHARJYA 2022 年 10 月 30 日
#Your Comment: Edited: TTo run the code here itself (Tap Green Tringular Button-Online) or try it on Matlab Platform (System-Offline)

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeAnnotations についてさらに検索

製品


リリース

R2022a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by