For loop help for Linear Algebra Class
Afficher commentaires plus anciens
I cant seem to get this algorithm code correct.
%HW3 #2
% Given:
%
% y_k denotes k index
%
% y_k=A*x_k
% r_k=norm(y_k) / norm(x_k)
% x_(k+1) = y_k / norm(y)
%
% Create a vector with 0-50 indexes of k
clear all;
close all;
A = [-5,3,-1;0,4,1;0,0,-2];
x(1)=[1;1;1];
for k = 1:51
y{k} = A.*x;
r{k} = norm(y)/norm(x);
x{k+1} = y/norm(y);
end
I receive the error: "In an assignment A(I) = B, the number of elements in B and I must bethe same."
Im not sure how to go about fixing the problem, because I do not fully understand how mat lab operates yet.
4 commentaires
Cedric
le 1 Fév 2013
In addition to Walter's answer, y in your loop is the full cell array. It is probably not what you want to use when you compute x{k+1}.
Sean Murphy
le 1 Fév 2013
Sean Murphy
le 1 Fév 2013
Modifié(e) : Sean Murphy
le 1 Fév 2013
You're most welcome! Note that x, y, r are 1D cell arrays, so x{1,51} is the same as x{51}, and the [ ] that you use in [x{1,51}] have no effect.
If you wanted to save all the x vectors though, you could concatenate all cells content of x (which is a cell array, so its elements are cells whose content are 3x1 numeric arrays) the following way: [x{:}], which would be a 3x52 array of vectors in column. This dimension should also make you realize that as you compute x{k+1}, the boundaries that you are defining might need some additional thoughts, especially if you wanted to use then simultaneously x and y (as [y{:}] is a 3x51 array)..
Réponse acceptée
Plus de réponses (0)
Catégories
En savoir plus sur Creating and Concatenating Matrices dans Centre d'aide et File Exchange
Produits
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!