필터 지우기
필터 지우기

I need help in solving a matrix (Tensors)

조회 수: 4 (최근 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개)

카테고리

Help CenterFile Exchange에서 Splitters and Couplers에 대해 자세히 알아보기

태그

Community Treasure Hunt

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

Start Hunting!

Translated by