Output of loop is 2x1 vector

3 visualizaciones (últimos 30 días)
mgc872
mgc872 el 5 de Nov. de 2021
Comentada: Walter Roberson el 28 de Oct. de 2024
I am trying to perform a manual computation of gradient descent, but having trouble with the for loop in storing the output as a vector (2x1 in this case).
With my inputs:
m=20x2 vector
f=20x1 vector
I have set up this for loop:
length= 10000; %k steps
c = 0.000001; %constant
a0 = [1;1] %first guess
a(1) = a0 -c * M' * (M* a0 -f) %first computation
for k=2:length
a(k) = a(k-1) - c * M' * (M * a(k-1) - f);
end
Unfortunately, I'm seeing `Unable to perform assignment because the left and right sides have a different number
of elements.`
I've verified that the output of the single-case computation a = a0 - c * M' * (M* a0 -f) is [a1;a2]. This is correct.
My question is how one stores an 'a1, a2' vector as the loop continuously iterates and updates the 'a1, a2' ?

Respuesta aceptada

Jon
Jon el 5 de Nov. de 2021
Editada: Jon el 5 de Nov. de 2021
If you want to store the results of each loop in a 2 by numSteps matrix you can do this
numSteps= 10000; %k steps
c = 0.000001; %constant
a0 = [1;1] %first guess
% preallocate array to hold results
a = zeros(2,numSteps)
a(:,1) = a0 -c * M' * (M* a0 -f) %first computation
for k=2:length
a(:,k) = a(k-1) - c * M' * (M * a(k-1) - f);
end
Note, I changed your variable name from length to numSteps, length is a Matlab command that gives the maximum dimension of a matrix. Using it as a variable name will work, the variable assignment supersedes the MATLAB function, but is confusing if you think length is a function
  3 comentarios
Jon
Jon el 5 de Nov. de 2021
oops, need to pull vectors out of a matrix on right hand side too does this help?
a(:,k) = a(:,k-1) - c * M' * (M * a(:,k-1) - f);
Jon
Jon el 5 de Nov. de 2021
If this doesn't work, could you please provide a little more of your example so that I can actually run it (I think I need something that defines M and -f to run it)

Iniciar sesión para comentar.

Más respuestas (1)

Solomon
Solomon el 28 de Oct. de 2024
no
  1 comentario
Walter Roberson
Walter Roberson el 28 de Oct. de 2024
I am having trouble figuring out how "no" is an Answer to the problem the user posed? It certainly is possible to store output vectors, so I am having trouble figuring out what the "no" is in response to?

Iniciar sesión para comentar.

Categorías

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

Productos


Versión

R2021b

Community Treasure Hunt

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

Start Hunting!

Translated by