2011-12-28 2 views
0
나는 내 자신 기능 빌드에서이 두 문을 변환 할 때 나는 문제에 직면

:내 FFT2 나와 함께 작동하지 기능

gaus=gauss/sum(gauss(:)); 
BeforeAbs=fft2(gaus,size(im,1),size(im,2)); 

을 그리고 그것은 내게 준 [X에 액세스 할 시도 (2); 경계 중 인덱스 때문에 numel (X) =이 오류가 나와 함께 나타납니다 이유 1]

가 이
%--------Start convert from build in to my own function of Fourier transformation of 1 D 
      gaus=gauss/sum(gauss(:)); 

      for u=1:(gaus) 
      summ=0; 
      for x=1:1 
      w2=(-1*(sqrt(-1)))*2*pi*((u*x)/(gaus+1)) 
      summ=summ+(gaus(x)*exp(w2)); 
      end 
      PQ2(u)=summ; 
      end% 


     X=size(im,1); 
     for u=1:(X) 
      summ=0; 
      for x=1:1 
       w3=(-1*(sqrt(-1)))*2*pi*((u*x)/(X+1)) 
       summ=summ+(X(x)*exp(w3)); 
      end 
      PQ3(u)=summ; 
     end 


    BeforeAbs=[PQ2 PQ3]; 

사람이 말해 줄래? 코드에서

+0

문제를 일으키는 ** 최소 ** 코드로 줄이십시오. –

+0

OK, 업데이트 된 버전보기 및 고맙습니다. –

+0

첫 번째 코드 스 니펫이 두 번째 코드 스 니펫과 어떻게 관련되어 있는지 확실하지 않습니다 ... –

답변

0

, 문

X=size(im,1); 

는 첫 번째 차원을 따라 변수 im의 크기를 반환합니다. 그러면 스칼라 값이 반환됩니다.

for x=1:2 
    ... 
    summ=summ+(X(x)*exp(w3)); 
end 

반복 값 x = 1x = 2 이상 : 그러나, 당신은 for 루프를 가지고있다. x = 2 일 때 X(x)을 평가하려고하면 X에는 요소가 하나만 있기 때문에 오류가 발생합니다.

기본적으로, 당신이에 상응하는 뭔가를하고있다 : 또한

X = 5 
X(2) 

, 당신의 u를위한 루프 :

for u=0:(X-1) 

u = 0에서 시작하지만, 나중에

을 설정하려고
PQ3(u)=summ; 

그러나 MATLAB의 배열 인덱싱은 입니다. 1 기반이므로 PQ3(0) 오류가 발생합니다. 1 : PQ3(1) = summ에서 색인 생성을 시작해야합니다.

+0

좋아, 어떻게해야합니까? 그것을 해결하기 위해? 나는 루프를 statred 만들고 1로 끝내려고했고 나에게 같은 문제를 준다. –

+0

위의 추가 답변을 참조하십시오. – Kavka

+0

도 1에 의해 시작되었습니다. 또한 X (2)에 액세스하려고 시도했습니다. numel (X) = 1이므로 인덱스가 범위를 벗어납니다. –

관련 문제