How to call columns of matrices using 'for loop' ?
조회 수: 2 (최근 30일)
이전 댓글 표시
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
Matt J
2021년 4월 15일
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).
채택된 답변
추가 답변 (1개)
David Hill
2021년 4월 15일
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
David Hill
2021년 4월 15일
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);
참고 항목
카테고리
Help Center 및 File Exchange에서 Loops and Conditional Statements에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!