No Plotting Done In Function With Changing Variables
2 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Avery-Ryan Ansbro
am 13 Feb. 2022
Bearbeitet: DGM
am 13 Feb. 2022
I am trying to plot a function that varies as a function of angular values. I have followed example code from many here and can get the code to run, but the resultant plot is empty. Can anyone spot what kind of issue I'm having? Gamma seems to reach the value of 6 before quitting on me
ncont=3.24;
kcont=4.28;
step=pi/180
limit=2*pi
for gamma = 0:step:limit
num1=(((ncont*cos(gamma))-1)^2)+((kcont^2)*cos(gamma)^2);
num2=((ncont-cos(gamma))^2)+kcont^2;
den1=(((ncont*cos(gamma))-1)^2)+((kcont^2)*cos(gamma)^2);
den2=((ncont+cos(gamma))^2)+kcont^2;
abs=1-(0.5*((num1/den1)+(num2/den2)));
plot(gamma,abs);
end
0 Kommentare
Akzeptierte Antwort
DGM
am 13 Feb. 2022
Bearbeitet: DGM
am 13 Feb. 2022
The problem is how you're specifying the linetype and when you're doing the plotting. Since you're plotting each point one at a time, there are 361 individual plot objects consisting of no line (because each is only one point) and no marker type.
You can specify a marker type and get a pseudoline
ncont=3.24;
kcont=4.28;
step=pi/180;
limit=2*pi;
for gamma = 0:step:limit
num1=(((ncont*cos(gamma))-1)^2)+((kcont^2)*cos(gamma)^2);
num2=((ncont-cos(gamma))^2)+kcont^2;
den1=(((ncont*cos(gamma))-1)^2)+((kcont^2)*cos(gamma)^2);
den2=((ncont+cos(gamma))^2)+kcont^2;
abs=1-(0.5*((num1/den1)+(num2/den2)));
plot(gamma,abs,'k.'); hold on
end
Or you can save the results and plot them outside the loop.
ncont=3.24;
kcont=4.28;
step=pi/180;
limit=2*pi;
gamma = 0:step:limit;
absv = zeros(size(gamma));
for k = 1:numel(gamma)
num1=(((ncont*cos(gamma(k)))-1)^2)+((kcont^2)*cos(gamma(k))^2);
num2=((ncont-cos(gamma(k)))^2)+kcont^2;
den1=(((ncont*cos(gamma(k)))-1)^2)+((kcont^2)*cos(gamma(k))^2);
den2=((ncont+cos(gamma(k)))^2)+kcont^2;
absv(k)=1-(0.5*((num1/den1)+(num2/den2)));
end
figure
plot(gamma,absv)
Of course, the loop isn't necessary either.
ncont=3.24;
kcont=4.28;
step=pi/180;
limit=2*pi;
gamma = 0:step:limit;
num1=(((ncont*cos(gamma))-1).^2)+((kcont^2)*cos(gamma).^2);
num2=((ncont-cos(gamma)).^2)+kcont^2;
den1=(((ncont*cos(gamma))-1).^2)+((kcont^2)*cos(gamma).^2);
den2=((ncont+cos(gamma)).^2)+kcont^2;
absv=1-(0.5*((num1./den1)+(num2./den2)));
figure
plot(gamma,absv)
0 Kommentare
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Graphics Object Identification finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!