I have been trying to do my first program with matlab in order to plot some data on a graph. My function is as follows:
%refractive indices
clear all nair=1; nSi=3.5+0.005*1i; nSiO2=1.5; nMoS2=5.6; %Materials thickness
dSiO2=285e-10; dMoS2=input('insert MoS2 thickness (m): '); donda=linspace(450e-9,700e-9,1000); for M=1:length(dMoS2) %Total matrix bare SiO2
m_bare=(Sij(nair,nSiO2)).*(Pj(nSiO2,dSiO2,donda)).* (Sij(nSiO2,nSi)); %Total matrix with MoS2
m=(Sij(nair,nMoS2)).*(Pj(nMoS2,dMoS2(M),donda)).*(Sij(nMoS2,nSiO2)).*(Pj(nSiO2,dSiO2,donda)).*(Sij(nSiO2,nSi)); %Reflection coefficients
R_bare=abs(m_bare(2,1)./m_bare(1,1)).^2; R=abs(m(2,1)/m(1,1)).^2; %Contrast
C(M)=(R-R_bare)/(R+R_bare); end %Output:
plot(donda,C) xlabel('wavelength (nm)') ylabel('Contrast')
Pj function:
%Propagation matrix
function p=Pj(nj,dj,lambda0) phi=1i*2*pi*nj*dj./lambda0; p=[exp(-phi) 0; 0 exp(+phi)]; end
And my Sij function:
%scattering matrix
function s=Sij(ni,nj) nsum=ni+nj; nn=(ni-nj)./nsum; s=[1 nn; nn 1]./(2*ni/nsum); end
When I try to run the program I used to get an error mldivide but after adding a dot to define variables everything was solved on that issue. NOW, im getting an error on line 13 which is as follows:
??? Error using ==> timesMatrix dimensions must agree.Error in ==> Wavelength_vs_contrast at 13m_bare=(Sij(nair,nSiO2)).*(Pj(nSiO2,dSiO2,donda)).*(Sij(nSiO2,nSi));
I don't know what im doing wrong, so if you could please help me out I would greatly appreciate it. Thanks in advance: Guillermo
Best Answer