Want to insert a matrix in a for loop and change it with a variable
Show older comments
Hello,
So, I have a variable phi(1x41) changing with lambda(1x41) and there is matrix (2x2) inside a for loop that needs to be changed with phi but the dimension of matrix should be (2x2x41) instead of (2x42) as it shown in workspace. Can anyone help me in this?
d1 = 0.1077;
lam = 3:0.1:7;
th = 0;
n1 = 2.32;
for j = 1:length(lam)
phi1 =2*pi.*(d1./lam).*sqrt((n1).^2 - sind(th).^2);
P1 = [exp(1i.*phi1) 0; 0 exp(-1i.*phi1)];
end
3 Comments
Dyuman Joshi
on 19 Apr 2023
"there is matrix (2x2) inside a for loop that needs to be changed"
There is no 2x2 matrix in the given loop. phi1 is 1x41 and P1 is 2x42.
And the for loop doesn't make sense, you are just over-writing phi1 and P1 with each iteration. No variable is varying with the loop.
chicken vector
on 19 Apr 2023
Edited: chicken vector
on 19 Apr 2023
d1 = 0.1077;
lam = 3:0.1:7;
th = 0;
n1 = 2.32;
phi1 = 2*pi.*(d1./lam).*sqrt((n1).^2 - sind(th).^2);
P1 = zeros(2,2,length(lam));
P1(1,1,:) = exp(1i.*phi1);
P1(2,2,:) = exp(-1i.*phi1)];
This is just one of the many ways you could build your matrix.
Note that the for loop changes the values of the variable j, which your are not using so it is completely useless.
At each iteration you overwrite the variable P1 with the same values since:
x = 1:3;
M = [x 0; 0 x];
Produces:
M = [1 2 3 0 ; 0 1 2 3];
To effectively use the loop I suggest you to initialise the variable outside the loop and use j to change indexing inside P1.
P1 = zeros(2,2,length(lam));
phi1 =2*pi.*(d1./lam).*sqrt((n1).^2 - sind(th).^2);
for j = 1 : length(lam)
P1(:,:,j) = [exp(1i.*phi1(j)) 0 ; 0 exp(1i.*phi1(j))];
end
Anyway I don't reccomend you doing this because vectorisation is much faster than looping and you would notice a great difference with large datasets.
Ashi Khajotia
on 19 Apr 2023
Accepted Answer
More Answers (0)
Categories
Find more on Loops and Conditional Statements in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!