??? Error using ==> times Matrix dimensions must agree

조회 수: 1 (최근 30일)
Guillermo Lopez
Guillermo Lopez 2012년 1월 24일
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 ==> times
Matrix dimensions must agree.
Error in ==> Wavelength_vs_contrast at 13
m_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

채택된 답변

Andrew Newell
Andrew Newell 2012년 1월 24일
In the line
m_bare=(Sij(nair,nSiO2)).*(Pj(nSiO2,dSiO2,donda)).* (Sij(nSiO2,nSi));
you are doing element-by-element multiplication between matrices that are 2 x 2, 2 x 1001 and 2 x 2. Let's call them A, B and C. A multiplication like
A*B
(no dot) makes dimensional sense, as does
(A*B)'*C
I don't know if that is what you are trying to calculate, though.
I recommend you read Debugging.

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 MATLAB에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by