Creating Unit vectors in a loop

14 visualizaciones (últimos 30 días)
azarang asadi
azarang asadi el 3 de Feb. de 2020
Respondida: James Tursa el 4 de Feb. de 2020
Hey
I have a loop an I'm trying to create some unit vectors as follows:
e1 = [1;0;0;0;0;0;0;0]
e2 = [0;1;0;0;0;0;0;0]
e3 = [0;0;1;0;0;0;0;0]
all the way to
e7 = [0;0;0;0;0;0;0;1]
Thanks
  1 comentario
James Tursa
James Tursa el 3 de Feb. de 2020
1) Do you have to use a loop? Is that part of the assignment? There are easier ways to do this other than a loop.
2) You should not use e1 ... e7 as the variable names. This will create problems downstream in your code. I would suggest a cell array instead, e{1}, e{2}, ... , e{7}. This will make it easier to use indexing on these variables. E.g.,

Iniciar sesión para comentar.

Respuesta aceptada

Shunichi Kusano
Shunichi Kusano el 3 de Feb. de 2020
Hi azarang,
The following code is an example
vecLength = 8;
I = eye(vecLength);
for i = 1:vecLength
% save the vector as a field of the struct
fieldname = ['e' num2str(i)];
unitVectors.(fieldname) = I(:,i);
end
HTH

Más respuestas (1)

James Tursa
James Tursa el 4 de Feb. de 2020
Since a complete answer has already been posted, I will post this one using a cell array result which will be much easier to index:
n = whatever length vectors you want
e = mat2cell(eye(n),ones(n,1),n);

Categorías

Más información sobre Loops and Conditional Statements en Help Center y File Exchange.

Productos


Versión

R2019b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by