Borrar filtros
Borrar filtros

No Plotting Done In Function With Changing Variables

2 visualizaciones (últimos 30 días)
Avery-Ryan Ansbro
Avery-Ryan Ansbro el 13 de Feb. de 2022
Editada: DGM el 13 de Feb. de 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

Respuesta aceptada

DGM
DGM el 13 de Feb. de 2022
Editada: DGM el 13 de Feb. de 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)

Más respuestas (0)

Categorías

Más información sobre Graphics Object Identification en Help Center y File Exchange.

Etiquetas

Productos


Versión

R2021b

Community Treasure Hunt

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

Start Hunting!

Translated by