speed up 'for' loops
    조회 수: 4 (최근 30일)
  
       이전 댓글 표시
    
Hi,
How can I speed up following 'for' loops? Help me please.
 P=200;
N=40000000;
y(1:P)=3;
% a: P X 1 matrix (vector)
% Z: P X 1 matrix (vector)
% x: N X 1 matrix (vector)
%%%%%Loops
y(P+1:N)=0;
for i=P+1:N 
    for j=1:P
        y(i)=y(i)-a(j)*x(i-j);
    end
end
for i=1:N 
    for j=1:P 
        f(i,j)=Z(j)^(i-1); 
    end 
end
Thanks in advance.
댓글 수: 0
채택된 답변
  Jan
      
      
 2012년 9월 7일
        
      편집: Jan
      
      
 2012년 9월 7일
  
      P = 200;
N = 40000000;
a = rand(P, 1);
Z = rand(P, 1);
x = rand(N, 1);
y(P+1:N) = 0;  % This one at first! -> pre-allocation
y(1:P)   = 3;
at       = transpose(a);
for i=P+1:N 
  y(i) = y(i) - at * x(i-1:-1:i-P);  % Dot-product of vectors => SUM
end
f = ones(P, N);
for i = 2:N 
  f(:, i) = f(:, i - 1) .* Z; 
end
f = transpose(f);
댓글 수: 5
추가 답변 (1개)
참고 항목
카테고리
				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!