I need help in solving a matrix (Tensors)

6 ビュー (過去 30 日間)
CHARUMATHI P R
CHARUMATHI P R 2024 年 2 月 6 日
コメント済み: Morgan 2024 年 2 月 7 日
clc
clear all
close all
E0 = 5; % Permivittity at infinite frequency
W_P = 13.4e15; % Plasma Frequency
Gamma = 0.7e14; % collison Frequency
c = 3e8; % Speed of light in vacuum
e0 = 8.85e-12; % Permivittity in free space
lambda=1350e-9:10e-9:1750e-9;
f=c./lambda;
w=2*pi*f;
e11 = E0-(W_P^2./(w.^2-(1i*Gamma.*w)));
e22=16.2;
e33=11.9;
h1= 8; %Silver
h2= 25; %Silica
h3=19; %Germanium
e_TM=(e11.*e22.*e33)./((e22.*e33.*h1)+(e11.*e33.*h2)+(e11.*e22.*h3))./(h1+h2+h3);
e_TE=((e11.*h1)+(e22.*h2)+(e33.*h3))./(h1+h2+h3);
figure
plot(lambda,real(e_TM),'b',lambda,imag(e_TM),'g')
xlabel('Wavelength')
ylabel('permivittity (TM Mode)')
legend('Real','Imag')
figure
plot(lambda,real(e_TE),'b',lambda,imag(e_TE),'g')
xlabel('Wavelength')
ylabel('permivittity (TE Mode)')
legend('Real','Imag')
Here, I need to caluculate
figure
plot(lambda,real(e_eff),'b',lambda,imag(e_eff),'g')
Unrecognized function or variable 'e_eff'.
legend('real','Im','Location','southeast');
xlabel('Wavelength (nm)');
ylabel('Effective Permittivity');

採用された回答

Morgan
Morgan 2024 年 2 月 7 日
編集済み: Morgan 2024 年 2 月 7 日
If I'm understanding your question correctly, you're trying to calculatte an effective medium tensor of the form:
where
Usually , , and are fill fractions for each composite material and have values in the range of 0 to 1, but I could just be unfamiliar with the exact effective medium model you're using. I've also never encountered a material with only one dispersive (varies with frequency) tensor element. Usually each tensor element is dispersive.
Assuming this is the case, however, the code you're looking for is:
e_eff = zeros(3,3,length(w));
e_eff(1,1,:) = e0*e_TE(:);
e_eff(2,2,:) = e0*e_TE(:);
e_eff(3,3,:) = e0*e_TM(:);
This creates a permittivity tensor that follows the effective medium model at each frequency w you've provided.
Also, I noticed you wanted to plot the effective tensor with:
figure
plot(lambda,real(e_eff),'b',lambda,imag(e_eff),'g')
legend('real','Im','Location','southeast');
xlabel('Wavelength (nm)');
ylabel('Effective Permittivity');
MATLAB will error out saying "Data cannot have more than 2 dimensions" since you're attempting to plot 9 tensor elements per wavelength. If you could clarify what exactly you're trying to plot, I might be able to assist further.
  4 件のコメント
CHARUMATHI P R
CHARUMATHI P R 2024 年 2 月 7 日
Sir, How to plot effective permittivity vs wavelength
Morgan
Morgan 2024 年 2 月 7 日
If you're trying to plot the effective permittivity tensor, this does not make sense. I recommend plot each unique element of the tensor ( and ) separately like the code you had previously:
% PLOT EFFECTIVE PERMITTIVITY (TE MODE)
figure
plot(lambda,real(e_TE),'b',lambda,imag(e_TE),'g')
xlabel('Wavelength')
ylabel('permivittity (TE Mode)')
legend('Real','Imag')
% PLOT EFFECTIVE PERMITTIVITY (TM MODE)
figure
plot(lambda,real(e_TM),'b',lambda,imag(e_TM),'g')
xlabel('Wavelength')
ylabel('permivittity (TM Mode)')
legend('Real','Imag')
By chance, if you're referring to plotting an Index Ellipsoid this will be slightly more complicated and doesn't show refractive index as a function of wavelength unless you animate the plot.

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

その他の回答 (0 件)

タグ

Community Treasure Hunt

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

Start Hunting!

Translated by