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
KSSV
KSSV 2020 年 7 月 20 日
Read about legend.

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

その他の回答 (0 件)

カテゴリ

質問済み:

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