How to remove the vertical lines of band gaps?
3 ビュー (過去 30 日間)
古いコメントを表示
clc
close all
c = 3e8;
d1 = 0.4;
d2 = 0.6;
d = d1 + d2;
n1 = sqrt(12);
n2 = 1;
lambda = linspace(400e-3,800e-3, 10000);
D1 = (2*pi*n1*d1)./lambda;
D2 = (2*pi*n2*d2)./lambda;
RHS = cos(D1).*cos(D2) - 0.5*(n1^2+n2^2)/(n1*n2) * sin(D1) .*sin(D2);
kz =acos(RHS)/d;
figure(1)
plot(kz,lambda,'r')
figure(1)
hold on
plot(-kz,lambda,'r')
hold off
How to remove the vertical lines(i.e, imaginary or forbidden range of the function) in band gap
0 件のコメント
採用された回答
Sulaymon Eshkabilov
2023 年 8 月 14 日
If I understood your question correctly, one of the possible easy solutions is to use logical indexing to remove those data points (vertical data points) from the data to be plotted, e.g.:
clc
close all
c = 3e8;
d1 = 0.4;
d2 = 0.6;
d = d1 + d2;
n1 = sqrt(12);
n2 = 1;
lambda = linspace(400e-3,800e-3, 10000);
D1 = (2*pi*n1*d1)./lambda;
D2 = (2*pi*n2*d2)./lambda;
RHS = cos(D1).*cos(D2) - 0.5*(n1^2+n2^2)/(n1*n2) * sin(D1) .*sin(D2);
kz =acos(RHS)/d;
IDX1 = kz>3.1415;
kz(IDX1)=[];
lambda(IDX1)=[];
figure(1)
plot(kz,lambda,'r*')
figure(1)
hold on
plot(-kz,lambda,'r*')
hold off
その他の回答 (1 件)
参考
カテゴリ
Help Center および File Exchange で Line Plots についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!