Multiple line with different variable in a plot

5 vues (au cours des 30 derniers jours)
Yixiang Guice
Yixiang Guice le 3 Mar 2022
Commenté : AndresVar le 7 Mar 2022
Hello people, I am current working on a homework. I am supposed to have a plot that contain multiple data line with varying B and pi_o. I tried to put it into a loop but it does not seem to work, Any help will be appreciated.
Pa = 23771;
Ta = 218.789;
R = 287;
gamma = 1.4;
Mf = 0.85;
fan_isen = 0.91;
nozzle_isen = 0.985;
ec = 0.915;
press_drop_CC = 0.04;
cpg = 1148;
cp = 1005;
Qr = 43800*(10^3);
cc_burner_eff = 0.99;
mecha_eff = 0.985;
et_HP = 0.93;
gammag = 1.333;
et_LP = 0.92;
%custom
pi_fb = 1.5; %<2.1
pi_fc = 1.5; %<2.1
% pi_o = 42; %<52
T04 = 1600; %Tet<2050K
% B = 8; %<11
B = 0:0.5:10;
pi_o = 2:2:30;
for k = 1:length(pi_hp)
vf = Mf * ((gamma*Ta*R)^(1/2));
T02 = Ta * (1+((gamma-1)/2)*0.85^2);
P02 = Pa * (1+((gamma-1)/2)*0.85^2)^(gamma/(gamma-1));
%Bypass
P013 = pi_fb * P02;
T013 = T02*(1+((1/fan_isen)*((P013/P02)^(((gamma-1)/gamma)))-1));
P019 = P013;
T019 = T013;
critical_pressure_ratio = 1/(1-((1/nozzle_isen)*((gamma-1)/(gamma+1))))^(gamma/(gamma-1));
P19 = P019/critical_pressure_ratio;
T19 = T019/(1/((1-((1/nozzle_isen)*((gamma-1)/(gamma+1))))));
V19 = (gamma*R*T19)^(1/2)
%Core
P023 = pi_fc * P02;
tau_c = pi_fc^((gamma-1)/(gamma*ec));
T023 = tau_c*T02;
pi_hp = pi_o/pi_fc;
P03 = pi_hp*P023;
comp_isen = (((pi_fc^((gamma-1)/(gamma))))-1)/((pi_fc^((gamma-1)/(gamma*ec)))-1);
T03s = T023*(P03/P023).^((gamma-1)/gamma);%added dot
T03 = T023 + ((T03s-T023)/comp_isen);
P04 = (1-press_drop_CC)*P03;
f = ((cpg*T04)-(cp*T03))/(Qr - (cpg*T04));
fa = f/cc_burner_eff;
T045 = T04 - (cp*(T03-T023))/(mecha_eff*(1+fa)*cpg);
tau_t_HP = T045/T04;
HP_turb_isen = (1-tau_t_HP)/(1-(tau_t_HP^(1/et_HP)));
P045 = P04*(1-((1-(T045/T04))/(HP_turb_isen)))^(gammag/(gammag-1));
T05 = T045 - ((cp.*(T023-T02))+(B.*cp.*(T013-T02))).*(((mecha_eff.*(1+fa).*cpg))).^-1;
tau_t_LP = T05/T045;
LP_turb_isen = (1-tau_t_LP)/(1-(tau_t_LP.^(1/et_LP)));
P05 = P045.*(1-((1-tau_t_LP)/(LP_turb_isen))).^(gammag/(gammag-1));
P9 = Pa;
T9s = T05.*(((P9.*P05.^-1).^(gammag-1).*(gammag)).^-1);
T9 = nozzle_isen*(T9s-T05)+T05;
V9 = (2*cpg*(T05-T9)).^(1/2);
Ratio_of_exit_velocities = V19*(V9.^-1);
Fs = ((1.*(B+1).^-1).*((1+fa).*V9-vf))+((((1+fa).*R.*T9).*((V9.*P9.*(B+1))).^-1).*(P9-Pa))+((B./(B+1)).*(V19-vf))+(((R.*T19.*B)/(V19.*P19.*(B+1))).*(P19-Pa));
sfc = fa/((B+1).*Fs)
h = plot(pi_o, Fs);
end

Réponse acceptée

AndresVar
AndresVar le 3 Mar 2022
Modifié(e) : AndresVar le 3 Mar 2022
Here is an example. Loop for each B but use pi_o as a vector in your calculations.
clear;
pi_o = 2:2:30;
B=[3 5 8];
figure;
hold on;
% make lines for each B
for iiB=B
V9=sqrt(pi_o); % use pi_o as a vector
%...
Fs=V9*iiB;
plot(pi_o,Fs,'displayname',['B=' num2str(iiB)])
end
hold off;
legend('show');
An alternative would be 2 loops, populate a matrix in a loop, and plot each row (or column) after.
  4 commentaires
AndresVar
AndresVar le 7 Mar 2022
Modifié(e) : AndresVar le 7 Mar 2022
@Yixiang Guice you can make a list of the "styles" that correspond to the diffrent B's
Note the for loop initialization changed compared to the first example because now you need an index (in this case ii=1,2,3) rather than the B value directly
clear;
close all;
pi_o = 2:2:30;
B_vec=[3 5 8];
Bstyles = {'-ro','-b^','-kx'};
% make lines for each B
for ii=1:numel(B_vec)
Bii=B_vec(ii);
% calculations
V9=pi_o.^0.5; % use pi_o as a vector
%...
Fs=V9*Bii;
Ft=V9*Bii;
% update plots
figure(1);
plot(pi_o,Fs,Bstyles{ii},'displayname',['B=' num2str(Bii)])
hold on;
figure(2);
plot(pi_o,Ft,Bstyles{ii},'displayname',['B=' num2str(Bii)])
hold on;
end
% make plots pretty
figure(1);
hold off;
xlabel('B');
ylabel('Fs')
grid on; box on;
legend('show');
figure(2);
hold off;
xlabel('B');
ylabel('Fs2')
grid on; box on;
legend('show');
AndresVar
AndresVar le 7 Mar 2022
If you want change more properties you can try something like this, but now plots might looks ugly.
clear;
close all;
pi_o = 2:2:30;
B_vec=[3 5 8];
Bstyles = {...
{'-mo','linewidth',2,'MarkerEdgeColor','k','MarkerFaceColor','g','MarkerSize',8};...
{'--r^','MarkerFaceColor','none','MarkerSize',9}; ...
{':kd','MarkerSize',13}...
};
% make lines for each B
for ii=1:numel(B_vec)
Bii=B_vec(ii);
% calculations
V9=pi_o.^0.5; % use pi_o as a vector
%...
Fs=V9*Bii;
% update plots
figure(1);
plot(pi_o,Fs,Bstyles{ii}{:},'displayname',['B=' num2str(Bii)])
hold on;
end
% make plots pretty
figure(1);
hold off;
xlabel('B');
ylabel('Fs')
grid on; box on;
legend('show');

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur Line Plots dans Help Center et File Exchange

Produits


Version

R2019b

Community Treasure Hunt

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

Start Hunting!

Translated by