Plot two looping variables

조회 수: 6 (최근 30일)
Tomas White
Tomas White 2022년 5월 2일
댓글: Voss 2022년 5월 3일
Hello! I have this code which generates multiple values of the variable "CL" by iterating the variable "aoa", my problem is that when I try to plot both variables I generate a graph per "aoa" iteration and not all iterations in a single graph. I tried various methods and code combinations but nothing seems to do the job. Any help is much aprreciated!
%LLT
fprintf('Lifting line theory - 7.1 \n')
%Inputs
fprintf('------------------------------------------------------------- \n')
zeroliftd=-1.2;
aoainitiald=4;
aoafinald=10;
AR=9;
fprintf('------------------------------------------------------------- \n')
%input adjustments (deg to rad)
aoainitial=((aoainitiald*pi)/180);
aoafinal=((aoafinald*pi)/180);
zerolift=((zeroliftd*pi)/180);
%Station phi values
station=[1,2,3,4]';
s1phi=22.5;
s2phi=45;
s3phi=67.5;
s4phi=90;
phin=[s1phi,s2phi,s3phi,s4phi];
phi=phin.';
%Calculus - table 7.1
cosphi=cosd(phi);
sinphi1=sind(phi);
sinphi3=sind(3*phi);
sinphi5=sind(5*phi);
sinphi7=sind(7*phi);
miu=0.24933*(1-0.6*cosd(phi));
aoa=aoainitial;
while ((aoa) <= (aoafinal))
%table 7.1 display
fprintf('------------------------------------------------------------- \n')
fprintf('------------------------------------------------------------- \n')
fprintf('Math process corresponding to angle of attack (degrees) =')
dispaoa=aoa*(180/pi);
disp(dispaoa)
matrix1=[station,phi,cosphi,sinphi1,sinphi3,sinphi5,sinphi7,miu];
fprintf('Table 7.1: \n')
disp(matrix1);
fprintf('------------------------------------------------------------- \n')
%equation 7.31
%equation second member
L1=((matrix1(1,8))*(aoa-zerolift)*(matrix1(1,4)));
L2=((matrix1(2,8))*(aoa-zerolift)*(matrix1(2,4)));
L3=((matrix1(3,8))*(aoa-zerolift)*(matrix1(3,4)));
L4=((matrix1(4,8))*(aoa-zerolift)*(matrix1(4,4)));
Ltotaln=[L1,L2,L3,L4];
Ltotal=Ltotaln';
fprintf('Second member matrix for equation system 7.31: \n')
disp(Ltotal);
fprintf('------------------------------------------------------------- \n')
%matrix: A1
ma11=(matrix1(1,4))*((matrix1(1,8))+(matrix1(1,4)));
ma13=(matrix1(2,4))*((matrix1(2,8))+(matrix1(2,4)));
ma15=(matrix1(3,4))*((matrix1(3,8))+(matrix1(3,4)));
ma17=(matrix1(4,4))*((matrix1(4,8))+(matrix1(4,4)));
ma1n=[ma11,ma13,ma15,ma17];
ma1=ma1n';
%matrix: A3
ma31=(matrix1(1,5))*(3*(matrix1(1,8))+(matrix1(1,4)));
ma33=(matrix1(2,5))*(3*(matrix1(2,8))+(matrix1(2,4)));
ma35=(matrix1(3,5))*(3*(matrix1(3,8))+(matrix1(3,4)));
ma37=(matrix1(4,5))*(3*(matrix1(4,8))+(matrix1(4,4)));
ma3n=[ma31,ma33,ma35,ma37];
ma3=ma3n';
%matrix: A5
ma51=(matrix1(1,6))*(5*(matrix1(1,8))+(matrix1(1,4)));
ma53=(matrix1(2,6))*(5*(matrix1(2,8))+(matrix1(2,4)));
ma55=(matrix1(3,6))*(5*(matrix1(3,8))+(matrix1(3,4)));
ma57=(matrix1(4,6))*(5*(matrix1(4,8))+(matrix1(4,4)));
ma5n=[ma51,ma53,ma55,ma57];
ma5=ma5n';
%matrix: A7
ma71=(matrix1(1,7))*(7*(matrix1(1,8))+(matrix1(1,4)));
ma73=(matrix1(2,7))*(7*(matrix1(2,8))+(matrix1(2,4)));
ma75=(matrix1(3,7))*(7*(matrix1(3,8))+(matrix1(3,4)));
ma77=(matrix1(4,7))*(7*(matrix1(4,8))+(matrix1(4,4)));
ma7n=[ma71,ma73,ma75,ma77];
ma7=ma7n';
%matrix system
%equation first member
equationmatrix1=[ma1,ma3,ma5,ma7];
fprintf('First member matrix for equation system 7.31: \n')
disp(equationmatrix1);
fprintf('------------------------------------------------------------- \n')
%equation system solver
matrixA=linsolve(equationmatrix1,Ltotal);
%An matrix
fprintf('Equation system 7.31 solution: \n')
fprintf('A1 = ')
disp(matrixA(1,1));
fprintf('A3 = ')
disp(matrixA(2,1));
fprintf('A5 = ')
disp(matrixA(3,1));
fprintf('A7 = ')
disp(matrixA(4,1));
fprintf('------------------------------------------------------------- \n')
%Lift coefficient for inputed angle of attack:
fprintf('Corresponding CL for inputed angle of attack:\n')
CLin=(matrixA(1,1))*3.14159*AR;
fprintf('CL:');
disp(CLin);
fprintf('------------------------------------------------------------- \n')
%Theoretical value of induced drag coefficient for inputed angle of attack:
fprintf('Corresponding induced theorical CD for inputed angle of attack:\n')
CDin=(((CLin)^2)/(3.14159*AR))*(1+((3*(matrixA(2,1))^2)/((matrixA(1,1))^2))+((5*(matrixA(3,1))^2)/((matrixA(1,1))^2))+((7*(matrixA(4,1))^2)/((matrixA(1,1))^2)));
fprintf('Cd:');
disp(CDin);
aoa=aoa+pi/180;
end
plot(aoa,CLin);

채택된 답변

Voss
Voss 2022년 5월 2일
In order to see how aoa and CLin change in each iteration of the while loop, you can either: (1) plot them each time through the loop, or (2) collect all their values in arrays and plot the arrays after the loop.
Method 1 would have this kind of structure:
aoa=aoainitial;
while aoa < aoafinal
% ...
% calculate CLin
% ...
plot(aoa,CLin,'o'); % 'o' is a data marker, which is necessary to see a line with only one point
hold on % use hold on to keep each plotted line (in this case each plotted point)
aoa=aoa+pi/180;
end
Method 2 would have this kind of structure:
aoa_array = [];
CLin_array = [];
aoa=aoainitial;
while aoa < aoafinal
% ...
% calculate CLin
% ...
aoa_array(end+1) = aoa; % add the new values to the end of the arrays
CLin_array(end+1) = CLin;
aoa=aoa+pi/180;
end
plot(aoa_array,CLin_array); % plot the arrays
  댓글 수: 2
Tomas White
Tomas White 2022년 5월 3일
Used method 2 and worked like a charm!, It was easier for me to plot various graphs with it. Thanks for your time :)
Voss
Voss 2022년 5월 3일
You're welcome!

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Loops and Conditional Statements에 대해 자세히 알아보기

제품


릴리스

R2020a

Community Treasure Hunt

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

Start Hunting!

Translated by