Borrar filtros
Borrar filtros

How to call columns of matrices using 'for loop' ?

1 visualización (últimos 30 días)
Khan
Khan el 15 de Abr. de 2021
Comentada: Khan el 15 de Abr. de 2021
Hello,
I am new to MATLAB, can anyone tell me how can I use for loop for the following formulas?
Approx1=U(:,1)*S(1)*V(:,1)';
Approx2=U(:,1)*S(1)*V(:,1)'+ U(:,2)*S(2)*V(:,2)';
Approx3=U(:,1)*S(1)*V(:,1)'+ U(:,2)*S(2)*V(:,2)'+ UU(:,3)*S(3)*V(:,3)';
where U is 6 x 3, S is diagonal (3 x 3) and V is a 3 x 3 matrix. 1, 2 3 are being the columns of respective matrices.
Thank you
  8 comentarios
Matt J
Matt J el 15 de Abr. de 2021
I want to Multiply first coulmn of U, S and V' matrices and then multiply second coulms of U, S and V' matrices
No, you can't because the columns of all these matrices have different lengths. You therefore cannot multiply their columns together.
Aren't you simply doing KL-transforms with different truncations? If so, that is what my answer below gives you, (and you should Accept-click it).
Khan
Khan el 15 de Abr. de 2021
Thank you

Iniciar sesión para comentar.

Respuesta aceptada

Matt J
Matt J el 15 de Abr. de 2021
Editada: Matt J el 15 de Abr. de 2021
for i=1:3
Approx{i}= U(:,1:i)*S(1:i,1:i)*V(:,1:i).';
end
  1 comentario
Khan
Khan el 15 de Abr. de 2021
Editada: Khan el 15 de Abr. de 2021
dear, it is not working. actually in the first Approximation I want to Multiply, first coulmns of U, S and V' matrices. In the Second approximatrion, I want to Multiply first coulmn of U, S and V' matrices and then multiply second coulms of U, S and V' matrices, and then add them. Simillarly for the last approximation. I want to get three different approximations.

Iniciar sesión para comentar.

Más respuestas (1)

David Hill
David Hill el 15 de Abr. de 2021
s=diag(S);
for i=1:3
Approx(:,:,i)=U(:,i)*V(:,i)'*s(i);%I am assuming this is what you want, s(i) being scalar along the diagonal
end
Approx=cumsum(Approx,3);
  6 comentarios
David Hill
David Hill el 15 de Abr. de 2021
Hopefully you realize that S(1) is scalar and the first element in the diagonal matrix, S(2) will be zero, and S(3) will be zero. You are not multiplying by the column of S. The below produces the same result as expected.
for i=1:3
Approx(:,:,i)=U(:,i)*V(:,i)'*S(i);
end
Approx=cumsum(Approx,3);
Khan
Khan el 15 de Abr. de 2021
Thank you

Iniciar sesión para comentar.

Categorías

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

Community Treasure Hunt

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

Start Hunting!

Translated by