Output of loop is 2x1 vector

3 次查看(过去 30 天)
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' ?

采纳的回答

Jon
Jon 2021-11-5
编辑:Jon 2021-11-5
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 个评论
Jon
Jon 2021-11-5
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 2021-11-5
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)

请先登录,再进行评论。

更多回答(1 个)

Solomon
Solomon 2024-10-28
no
  1 个评论
Walter Roberson
Walter Roberson 2024-10-28
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?

请先登录,再进行评论。

类别

Help CenterFile Exchange 中查找有关 Loops and Conditional Statements 的更多信息

产品


版本

R2021b

Community Treasure Hunt

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

Start Hunting!

Translated by