Save New Variable to the Workspace for every iteration with a 'for' cycle
    3 visualizzazioni (ultimi 30 giorni)
  
       Mostra commenti meno recenti
    
Hello all,
I've been trying to save the Q_bar(3x3 matrix) answer seperately for every theta input but I am failing to save the Q_bar answer for each iteration. Because the only output is the final Q_bar matrix.
for theta = [0,45,60,45,45,60,45,0];
m = cos(theta*pi/180);
n = sin(theta*pi/180);
T = [m.^2 n.^2 2*m*n ; n.^2 m.^2 -2*m*n ; -m*n m*n m.^2-n.^2];
Tinv = inv(T);
Q_bar = Tinv*Q*T;
Q_bar = Q_bar(theta);
end
The final output should be Q_bar(0) = [3x3 matrix] , Q_bar(45) = [3x3 matrix], Q_bar(60) = [3x3 matrix] etc.
What can I do?
Thank You already
3 Commenti
  Stephen23
      
      
 il 23 Mag 2016
				Don't try to create variables in a loop. This is slow, buggy, and not robust. Read this to know why:
Risposta accettata
  Stephen23
      
      
 il 23 Mag 2016
        
      Modificato: Stephen23
      
      
 il 23 Mag 2016
  
      Exactly as Adam said in their comment, just use a 3D array like this:
Q = randi(9,3,3);
vec = [0,45,60,45,45,60,45,0];
out = NaN([size(Q),numel(vec)]);
for k = 1:numel(vec)
    theta = vec(k);
  m = cos(theta*pi/180);
  n = sin(theta*pi/180);
  T = [m.^2 n.^2 2*m*n ; n.^2 m.^2 -2*m*n ; -m*n m*n m.^2-n.^2];
  Tinv = inv(T);
  Q_bar = Tinv*Q*T;
  out(:,:,k) = Q_bar;
  %Q_bar = Q_bar(theta);
end
But note that you should use \ instead of inv.
Più risposte (1)
  Steven Lord
    
      
 il 23 Mag 2016
        You're trying to create variables like Q_bar0, Q_bar45. etc.? DON'T DO THAT. That would make your code more difficult to read and probably slower. Read this Answer for an explanation.
Adam's suggestion is the recommended approach.
theta = 0:45:360;
M = zeros(3, 3, length(theta));
for k = 1:length(theta)
  T = theta(k);
  M(:, :, k) = [1 0 0; 0 cosd(T) -sind(T); 0 sind(T) cosd(T)];
end
The rotation matrix for the angle theta(N) [for N between 1 and length(theta)] is M(:, :, N).
0 Commenti
Vedere anche
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!



