필터 지우기
필터 지우기

plot a graph from loop

조회 수: 1 (최근 30일)
Alina Abdikadyr
Alina Abdikadyr 2023년 2월 17일
댓글: Star Strider 2023년 2월 17일
Hello everyone!
Please, could you help me to plot the graphs using the loop
So, in my code I have the range of nv (nv=nmin:0.1:nmax)
for each value of nv, it plots the different parabolas. In figure 1, R vs V graph is plotted.
How to plot the graph of R vs V? (R depends on V by formula used in loop). I tried to implement nnew, but it gives me constan values.
So V is caluclated in loop. At the end, I have to get a graph of nv vs V (where V is changing parabolically with n).
At the end if i look at my genereted 10X45 matrix of c (which is the value of V) and 10X45 matrix of Rv (which is the value of Rv).
for each iteration i need to plot graphs in one figure. take the values of 2nd row of V and 2nd row of Rv
My code is:
clear all; close all
W = 10000;
S = 40;
AR=7;
cd0 = 0.005;
k = 1/pi/AR;
Psl=25000;
clalpha = 2*pi;
cdmin=4*cd0;
clmin=sqrt(3*cd0/k);
figure(1);hold on; xlabel('V');ylabel('P');
fun=@(n1) n1*W*(cdmin/clmin)*sqrt(2*n1*W/(1.225*S*clmin))-25000;
nmax = fzero(fun,2);
nmin=1/cos(0);
nv=nmin:0.1:nmax;
g=9.81;
%3.1
for k1 = 1:numel(nv)
n = nv(k1);
i=0;
for alpha = 1:0.25:12
i=i+1;
cl(i) = clalpha * alpha * pi/180;
V(i) = sqrt(2*n*W/1.225/S/cl(i));
cd(i) = cd0 + k * cl(i) * cl(i);
D(i) = n*W*cd(i)/cl(i);
P(i) = D(i)*V(i);
P_a(i)=Psl;
R(i)=V(i)*V(i)/(g*sqrt(n*n-1));
T(i)=2*pi*R(i)/V(i);
end
c(k1,:) = V;
Pm(k1,:) = P;
Pma(k1,:) = P_a;
Rv(k1,:)=R;
xix = find(diff(sign(D.*V-P_a)));
if ~isempty(xix)
for k3 = 1:numel(xix)
idxrng = max(xix(k3)-1,1) : min(numel(V),xix(k3)+1);
xv(k3) = interp1(P(idxrng)-P_a(idxrng), V(idxrng), 0);
yv(k3) = interp1(V(idxrng),P(idxrng), xv(k3));
Xm{k1,k3} = xv(k3); % Intersection X-Matrix
Ym{k1,k3} = yv(k3); % Intersection Y-Matrix
end
end
figure(1); plot(V,P)
hold on
plot(V,P_a)
plot(xv, yv, 's', 'DisplayName',sprintf('Intersections %d',k1)) % Plot Intersections (Optional)
[minV,Vnidx] = min(V);
Vstall(k1,:) = minV;
Pstall(k1,:) = P(Vnidx);
nvv(:,k1)=nv;
[Pmin,idx] = min(P);
minP(k1,:) = Pmin;
Vm(k1,:) = V(idx);
N=nvv(:,1);
Vminp=Vm(:,1);
figure(2); plot(c,Rv)
figure(3); plot(V,T)
end
Table = cell2table(cat(2,Xm,Ym), 'VariableNames',{'V_p_max','V_p_min','Pmax','Pmin'});
Table = addvars(Table, Vstall, 'After','V_p_min');
Table = addvars(Table, N, 'Before','V_p_max');
Table = addvars(Table, Pstall, minP,Vminp, 'After','Pmin');
  댓글 수: 2
Mathieu NOE
Mathieu NOE 2023년 2월 17일
hello
P is an array size 1 x 45
how do you wnt to plot P vs n which is a scalar
same reamark with nv wich size is 1 x 10
maybe you wanted one specific P value for each iteration ? like Pmin vs nv ?
Alina Abdikadyr
Alina Abdikadyr 2023년 2월 17일
sorry, i modified my question

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

답변 (2개)

Sulaymon Eshkabilov
Sulaymon Eshkabilov 2023년 2월 17일
One of the possible ways to plot nv vs, V is to include cl values that leads to 3D plot, e.g.:
...
alpha = 1:0.25:12;
nv=nmin:0.1:nmax;
[ALF, NV]=meshgrid(alpha, nv);
CL = clalpha * ALF * pi/180;
Vall = sqrt(2*NV*W/1.225/S./CL);
surfc(ALF, CL, Vall)
  댓글 수: 1
Alina Abdikadyr
Alina Abdikadyr 2023년 2월 17일
sorry, i edited my question

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


Star Strider
Star Strider 2023년 2월 17일
Plotting ‘R’ as a function of ‘V’ is relatively straightforward:
figure
plot(V, R)
grid
xlabel('V')
ylabel('R')
What do you want to do with it afterwards?
clear all; close all
W = 10000;
S = 40;
AR=7;
cd0 = 0.005;
k = 1/pi/AR;
Psl=25000;
clalpha = 2*pi;
cdmin=4*cd0;
clmin=sqrt(3*cd0/k);
figure(1);hold on; xlabel('V');ylabel('P');
fun=@(n1) n1*W*(cdmin/clmin)*sqrt(2*n1*W/(1.225*S*clmin))-25000;
nmax = fzero(fun,2);
nmin=1/cos(0);
nv=nmin:0.1:nmax;
g=9.81;
%3.1
for k1 = 1:numel(nv)
n = nv(k1);
i=0;
for alpha = 1:0.25:12
i=i+1;
cl(i) = clalpha * alpha * pi/180;
V(i) = sqrt(2*n*W/1.225/S/cl(i));
cd(i) = cd0 + k * cl(i) * cl(i);
D(i) = n*W*cd(i)/cl(i);
P(i) = D(i)*V(i);
P_a(i)=Psl;
R(i)=V(i)*V(i)/(g*sqrt(n*n-1));
T(i)=2*pi*R(i)/V(i);
end
c(k1,:) = V;
Pm(k1,:) = P;
Pma(k1,:) = P_a;
Rv(k1,:)=R;
xix = find(diff(sign(D.*V-P_a)));
if ~isempty(xix)
for k3 = 1:numel(xix)
idxrng = max(xix(k3)-1,1) : min(numel(V),xix(k3)+1);
xv(k3) = interp1(P(idxrng)-P_a(idxrng), V(idxrng), 0);
yv(k3) = interp1(V(idxrng),P(idxrng), xv(k3));
Xm{k1,k3} = xv(k3); % Intersection X-Matrix
Ym{k1,k3} = yv(k3); % Intersection Y-Matrix
end
end
figure(1); plot(V,P)
hold on
plot(V,P_a)
plot(xv, yv, 's', 'DisplayName',sprintf('Intersections %d',k1)) % Plot Intersections (Optional)
[minV,Vnidx] = min(V);
Vstall(k1,:) = minV;
Pstall(k1,:) = P(Vnidx);
nvv(:,k1)=nv;
[Pmin,idx] = min(P);
minP(k1,:) = Pmin;
Vm(k1,:) = V(idx);
N=nvv(:,1);
Vminp=Vm(:,1);
figure(2); plot(c,Rv)
figure(3); plot(V,T)
end
figure
plot(V, R)
grid
xlabel('V')
ylabel('R')
figure
plot(V, R, 'LineWidth',2, 'DisplayName','R(V)')
hold on
plot(c,Rv, 'DisplayName','Rv(c)')
hold off
grid
xlabel('V')
ylabel('R')
% legend('Location','eastoutside')
Table = cell2table(cat(2,Xm,Ym), 'VariableNames',{'V_p_max','V_p_min','Pmax','Pmin'});
Table = addvars(Table, Vstall, 'After','V_p_min');
Table = addvars(Table, N, 'Before','V_p_max');
Table = addvars(Table, Pstall, minP,Vminp, 'After','Pmin');
.
  댓글 수: 2
Alina Abdikadyr
Alina Abdikadyr 2023년 2월 17일
Thank you!
Could you please me to plot in one graph. I have a formula of R=V^2/(9.81*sqrt(n^2-1)) for a constant V I should plot R and n curve, and for constant n I should plot V n curve
Star Strider
Star Strider 2023년 2월 17일
My pleasure!
I do not understand what you want to do. You plotted those together, however the ‘R’ here does not appear to be the same ‘R’ I plotted (and the only ‘R’ that I can find in your code).
What vectors are you plotting here, and where in your code are they calculated?
What constant values for ‘V’ and ‘n’ do you want to use?
Also, the ‘R’ and ‘n’ curves are not going to intersect when plotted on the same axes scales. What do you want to do with them?
My apologies, however I am confused here.

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

카테고리

Help CenterFile Exchange에서 Specifying Target for Graphics Output에 대해 자세히 알아보기

태그

제품


릴리스

R2022b

Community Treasure Hunt

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

Start Hunting!

Translated by