hello, i m facing problem to plot all columns of an array in same plot inside for loop.what my code doing is it's executing the value of last column of desired array.the array columns should plot curves for y axis.in code array - 'fxl'

clc;
fz1 = 1000;
fz2 = 1100;
step = 50;
gamma = -1;
gamma = gamma*(3.14/180);% converting into radians
pihix1 = +0.000e+000;
pihix2 = +0.000e+000;
pivix1 = +0.000e+000;
pivix2 = +0.000e+000;
picix1 = -0.786e+000;
pidix1 = -0.860e+000;
pidix2 = -5.540e-001;
pidix3 = +1.223e+001;
pieix1 = 68.570e-001;
pieix2 = -3.800e-002;
pieix3 = +0.000e+000;
pieix4 = +7.170e-002;
pikix1 = -68.125e+001;
pikix2 = 12.025e+001;
pikix3 = +0.000e-001;
for fz = fz1:step:(fz2)
disp(fz)
fxl = [];
kappal = [];
fz0 = 800;
dfz = (fz - fz0)/fz0;
R0 = 0.235;
disp(dfz)
for kappa = -0.25:0.01:0.25
y = pikix2+ pikix3;
sihix = pihix1 + pihix2*dfz;
sivix = fz*pivix1 + pivix2*dfz;
kappax = (kappa) + sihix;
cx = picix1;
mux = (pidix1 + (pidix2*dfz))*(1 - (pidix3*dfz)*(gamma^2));
dx = mux*fz;
ex = (pieix1 + pieix2*dfz + (pieix3*(dfz^2)))*(1 - ((pieix4)*(sign(kappax))));
kx = fz*pikix1 + ((pikix2*dfz)*exp(pikix3*dfz));
bx = (kx)/(cx*dx);
fx0 = dx*sin((cx*atan(bx*kappax - ex*(bx*kappax - atan(bx*kappax)))) + sivix);
fxl = cat(1,fxl,fx0) %desired array containg columns which need to be plotted
kappal = cat(1,kappal,kappax);
end
plot(kappal,fxl)
xlabel('Sa')
ylabel('fx')
grid on
end
%code executes this graph
%desired output

 채택된 답변

KSSV
KSSV 2020년 7월 19일
편집: KSSV 2020년 7월 19일
Use hold on after the plot.
Or you can save all your data into a amtrix and plot at once.
fz1 = 1000;
fz2 = 1100;
step = 50;
gamma = -1;
gamma = gamma*(3.14/180);% converting into radians
pihix1 = +0.000e+000;
pihix2 = +0.000e+000;
pivix1 = +0.000e+000;
pivix2 = +0.000e+000;
picix1 = +1.786e+000;
pidix1 = +2.850e+000;
pidix2 = -3.540e-001;
pidix3 = +1.223e+001;
pieix1 = +8.710e-001;
pieix2 = -3.800e-002;
pieix3 = +0.000e+000;
pieix4 = +7.100e-002;
pikix1 = +8.125e+001;
pikix2 = -2.025e+001;
pikix3 = +5.000e-001;
FZ = fz1:step:(fz2) ;
N = length(FZ) ;
Y = zeros(51,N) ;
for i = 1:length(FZ)
fz = FZ(i) ;
disp(fz)
fxl = [];
kappal = [];
fz0 = 800;
dfz = (fz - fz0)/fz0;
R0 = 0.235;
disp(dfz)
for kappa = -0.25:0.01:0.25
y = pikix2+ pikix3;
sihix = pihix1 + pihix2*dfz;
sivix = fz*pivix1 + pivix2*dfz;
kappax = (kappa) + sihix;
cx = picix1;
mux = (pidix1 + (pidix2*dfz))*(1 - (pidix3*dfz)*(gamma^2));
dx = mux*fz;
ex = (pieix1 + pieix2*dfz + (pieix3*(dfz^2)))*(1 - ((pieix4)*(sign(kappax))));
kx = fz*pikix1 + ((pikix2*dfz)*exp(pikix3*dfz));
bx = (kx)/(cx*dx);
fx0 = dx*sin((cx*atan(bx*kappax - ex*(bx*kappax - atan(bx*kappax)))) + sivix);
fxl = cat(1,fxl,fx0) %desired array containg columns which need to be plotted
kappal = cat(1,kappal,kappax);
end
Y(:,i) = fxl ;
end
%code executes this graph
plot(kappal,Y)
hold on
xlabel('Sa')
ylabel('fx')
grid on

댓글 수: 2

thanks ..that works great. can u suggest to label each curve according to thier corresponding variable

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

추가 답변 (0개)

카테고리

도움말 센터File Exchange에서 Scatter Plots에 대해 자세히 알아보기

질문:

2020년 7월 19일

댓글:

2020년 7월 20일

Community Treasure Hunt

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

Start Hunting!

Translated by