Solving mach Zehnder interferometer using matrix
115 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Sagarika Gupta
el 18 de Mayo de 2020
Comentada: Subashini Ram
el 1 de Mzo. de 2023
Hii everyone, I am sagarika gupta and this programming software is new for me and so please help me to slove mach zehnder using matrix method (as given below the matrices equaions(3),(4)&(5)). As we know that mach zehnder interferometer consists of two directional coupler and two arms we give one input and get two output(either we will get at arm 1 or at arm 2) and there is two phase shifters in the arms which will regularly change their phase . I want to plot this matrix for the machzehnder interferometer ,and i am unable to do it. So, with due respect i request to all the community memebers to help me.
0 comentarios
Respuesta aceptada
Ryan Comeau
el 19 de Mayo de 2020
Editada: Ryan Comeau
el 19 de Mayo de 2020
Hello,
great question, haven't tackled a physics one for a while. First off, cool that you're working on interferometers, they are fun to work with.
Secondly, if MATLAB is new to you, know that all variables are stored as matrices, so performing the "*" operation is a matrix multiplication operation. To perform a scalar multiplication of a matrix use ".*". Also, MATLAB does store the real and imaginary parts, and we can extract them seperately.
So, let's rock and roll to some code here, I would like to note that this will only help you get started, you may need to modify this for your particular operation. I'm going to write this code for you to compute the matrix in equation 4. This way, you can change the r and t values along with the phase difference.
%first, we want to initialise some variables
optical_field_transmission=0.5; %i don't know the domain for this (0-1?)
cross_coupling_coefficient=0.5; %i don't know the domain for this (0-1?)
phase_angle_one=pi/4; %check rads vs degrees in MATLAB, ther are unique functions for each.
phase_angle_two=pi/4;
transfer_matrix(1:2,1:2)=zeros(); %initialise the transfer matrix.
%compute the transfer matrix component by component
% "i" here is sqrt(-1)
transfer_matrix(1,1)=((optical_field_transmission.^2)*exp(i*phase_angle_one))...
-((cross_coupling_coefficient.^2)*exp(i*phase_angle_two));
transfer_matrix(2,2)=((optical_field_transmission.^2)*exp(i*phase_angle_two))...
-((cross_coupling_coefficient.^2)*exp(i*phase_angle_one));
transfer_matrix(1,2)=i.*optical_field_transmission.*cross_coupling_coefficient.*...
(exp(i*phase_angle_one)+exp(i*phase_angle_two));
transfer_matrix(2,1)=i.*optical_field_transmission.*cross_coupling_coefficient.*...
(exp(i*phase_angle_one)+exp(i*phase_angle_two));
So, if you want the matrix values for a single set of input parameters, used the above code. Below i'll write the code to plot the whole domain for each of your parameters(you'll need to change the t and r as i don't know their domains). I will also give you some tools to plot them. We are storing the data in a 4 dimension space, and you'll need to bring that down to 2d in order to plot in MATLAB. this means you'll need to choose fixed values for 3 parameters. Please validate the equations below. If i've made an error it is important that you notice it.
%we are going to us 4 nested for loops to iterate over all possible combinations.
%we are going to take 0.1 increments of r and t
%we are going to take 1.0 increments of phase angles.
n=1;
m=1;
f=1;
d=1;
for ii=1:0.05:pi %phase angle 1 indexed with d
for jj=1:0.05:pi %phase angle 2 indexed with f
for kk=0.1:0.1:1 %for t, indexed with n
for ll=0.1:0.1:1 %for r, indexed with m
data_vault_entry_one_one(d,f,n,m)=((kk.^2)*exp(i*ii))-((ll.^2)*exp(i*jj));
data_vault_entry_two_two(d,f,n,m)=((kk.^2)*exp(i*jj))-((ll.^2)*exp(i*ii));
data_vault_entry_one_two(d,f,n,m)=i.*kk.*ll.*(exp(i*ii)+exp(i*jj));
data_vault_entry_two_one(d,f,n,m)=i.*kk.*ll.*(exp(i*ii)+exp(i*jj));
m=m+1;
end
n=n+1;
end
f=f+1;
end
d=d+1;
end
So this will fill up the data vaults for you. Each data vault has the entry for one of the matrix parameters, you now need to choose which matrix entry you want to plot and which parameters you want fixed. Please read through the plot function, it is very elaborate. Here is one example:
%plot all entries of phase angle one for given other parameters
plot(data_vault_entry_one_one(:,pi/4,2,3))
%plot all entries of phase angle two for given other parameters
plot(data_vault_entry_two_one(pi/2,:,5,6))
Hope this helps get you started, please validate what i've written here
RC
2 comentarios
Subashini Ram
el 1 de Mzo. de 2023
Please help us to design and implement 1x16 signal router using mach zehnder interferometer
Más respuestas (1)
MOHD IMRAN KHAN
el 18 de En. de 2022
Hello Sagarika. Did you implement MZ interferometer in MATLAB successfully? If yes then please send me code. It will be a great support form your side. Thank You.
Email id: imrank9319@gmail.com
0 comentarios
Ver también
Categorías
Más información sobre Surface and Mesh Plots en Help Center y File Exchange.
Productos
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!