matrix multiplication without declaring the destination matrix first
    조회 수: 1 (최근 30일)
  
       이전 댓글 표시
    
hey,
I'm trying to multiply two matrices (I don't want to use any shortcuts, I want to do the multiplication by defention). can I do it without declaring first on the matrix?
what I wrote is:
C2 = zeros(N)
for i = 1:N
    for j = 1:N
        for k = 1:N
            C2(i,j) = C2(i,j) + A(i,k)*B(k,j); 
        end
    end
end
but the action of C2 = zeroes(N) is time consuming since N=1000 in this case. anyway to skip this declaration?
Thank you!
댓글 수: 3
  dpb
      
      
 2019년 10월 29일
				C2(N,N)=0;
may be even a tiny fraction faster...whatever it takes, it's a nit in comparison to not preallocting for larger arrays.
답변 (1개)
  Matt J
      
      
 2019년 10월 29일
        
      편집: Matt J
      
      
 2019년 10월 29일
  
      You can loop backwards. Then the pre-allocation will be done silently.
clear C2
for i = N:-1:1
    for j = N:-1:1
        for k = 1:N
            C2(i,j) = C2(i,j) + A(i,k)*B(k,j); 
        end
    end
end
However, I don't know why you think the zeros command is the slow part of the code. I also don't know why you care about speed. The only reason it would make sense to do this is as a homework exercise, in which case speed should not be the issue.
참고 항목
카테고리
				Help Center 및 File Exchange에서 Matrix Indexing에 대해 자세히 알아보기
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!



