2011-12-28 13 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

最初のコードスニペットが2番目のコードスニペットとどのように関連しているかはわかりません... –

答えて

0

、声明

X=size(im,1); 

は、その最初の次元に沿って可変imのサイズを返します。それはスカラー値を返します。値x = 1x = 2を反復処理

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

:しかし、あなたはforループを持っています。 x = 2X(x)と評価しようとすると、Xには要素が1つしかないため、エラーが発生します。あなたのforループuため、また

X = 5 
X(2) 

基本的に、あなたはこれと同等の何かをやっている

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であるため、範囲外のインデックスを作成します。 –

関連する問題