wl = 350*10^(-9):10^(-9):850*10^(-9);
ns = 1.5;
n0 = 1;
R_result=[1 1; 1 1];
M_result=[1 1; 1 1];
S_result=[1 1; 1 1];
M_last(:,:,1) = [1 1 ; 1 1];
p = input('How many layers do you want? ');
for k=1:p
n(1,k) = input('Enter refractive coefficient of layer');
l(1,k) = input('Enter length of layer');
for ws = 1:501
A(k,ws) = cos((2*pi)*l(1,k))/wl(1,ws);
B(k,ws) = (-i*sin((2*pi)*l(1,k))/wl(1,ws))/n(1,k);
C(k,ws) = -i*n(1,k)*sin((2*pi)*l(1,k))/wl(1,ws);
D(k,ws) = cos((2*pi)*l(1,k))/wl(1,ws);
end
end
%this is attemt to make.....
for wl_1 = 1:501
for p_1 = 1:p
M_result(:,:,p_1) = [A(p_1,wl_1) B(p_1,wl_1) ; C(p_1,wl_1) D(p_1,wl_1)];
M_last = M_last * M_result(:,:,p_1);
end
S(:,:,wl_1) = M_last;
end
for wl_2 = 1:501
r(:,:,wl_2) = ( S(1,1,wl_2)*n0 + S(1,2,wl_2)*ns*n0 - S(2,1,wl_2) - S(2,2,wl_2)*ns ) / ( S(1,1,wl_2)*n0 + S(1,2,wl_2)*ns*n0 + S(2,1,wl_2) + S(2,2,wl_2)*ns );
R(:,:,wl_2) = r(:,:,wl_2)*r(:,:,wl_2);
end
for p_2 = 1:501
R_r(p_2) = R(:,:,wl_2);
end
제 글 보시면,,, 질문 내용이 있는데 결과가 나오질 않아요.... Nan가 왜나오는건가요유유유
돌리면 M_result 값까지는 복소수로 값들이 잘 나오는데
M_last가 계산 될때 행렬 오름차순 곱인데 이게 숫자가 Nan 값으로 나옵니다...
divide-by-zero 확임
근데 단순 행렬 곱인데 0으로 나누는 경우가 안생길텐데...