Advertisement
shadvoll

tmm

Jan 9th, 2019
137
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
MatLab 1.25 KB | None | 0 0
  1. % Transfer matrix method
  2. % Author: Shuakat
  3. % ITMO University.
  4.  
  5.  
  6. close all;
  7. clear all;
  8. N = 1e3;
  9. lam = linspace(50,100,N);
  10. k = (2*pi)./lam;
  11.  
  12. er_layer = [2 3];
  13. ur_layer = [1 1];
  14. len_layer = [0.5 0.5].*sqrt(3);
  15.  
  16. k_layer = k.*sqrt(er_layer(1)*ur_layer(1));
  17.  
  18. incW = zeros(1,N);
  19. refW = zeros(1,N);
  20. incW_tmp = zeros(1,2);
  21. refW_tmp = zeros(1,2);
  22. incW(1) = 0.8;
  23. refW(1) = 1-0.64;
  24.  
  25. r = zeros(1,N);
  26. t = zeros(1,N);
  27.  
  28. for i=1:length(lam)-1
  29.     incW_tmp(1) = incW(i);
  30.     refW_tmp(1) = refW(i);
  31.     for j=1:length(len_layer)-1
  32.         M11 = cos(k_layer(i)*len_layer(j));
  33.         M12 = sin(k_layer(i)*len_layer(j))/k_layer(i);
  34.         M21 = -k_layer(i)*sin(k_layer(i)*len_layer(j));
  35.         M22 = cos(k_layer(i)*len_layer(j));
  36.         S11 = M12/M22;
  37.         S12 = (M11*M22-M12*M21)/M22;
  38.         S21 = 1/M22;
  39.         S22 = -M21/M22;
  40.         incW_tmp(j+1) = incW_tmp(j)*S11 + refW_tmp(j)*S12;
  41.         refW_tmp(j+1) = incW_tmp(j)*S21 + refW_tmp(j)*S22;
  42.     end
  43.     incW(i+1) = incW_tmp(end)*M11 + refW_tmp(end)*M12;
  44.     refW(i+1) = incW_tmp(end)*M21 + refW_tmp(end)*M22;
  45.     r(i) = incW(i+1)/incW(i);
  46.     t(i) = incW(i+1)/refW(i);
  47. end;
  48. figure
  49. plot(lam,r./max(abs(r)),lam,t./max(abs(t)));
  50. % plot(lam,incW./max(abs(incW)),lam,refW./max(abs(refW)));
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement