フィルターのクリア

No Plotting Done In Function With Changing Variables

2 ビュー (過去 30 日間)
Avery-Ryan Ansbro
Avery-Ryan Ansbro 2022 年 2 月 13 日
編集済み: DGM 2022 年 2 月 13 日
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

採用された回答

DGM
DGM 2022 年 2 月 13 日
編集済み: DGM 2022 年 2 月 13 日
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 件)

カテゴリ

Help Center および File ExchangeGraphics Object Identification についてさらに検索

製品


リリース

R2021b

Community Treasure Hunt

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

Start Hunting!

Translated by