0

最初に、Matlab FFT に慣れていました。たとえば、次のようにします。

    clc     
    fs = 4;    
    t = 0:1/fs:1-1/fs;     
    x1 = sin((2*pi)*t);     
    y1 = fft(x1,n);    

   FT_power1 = abs(y1(1:floor(n/2))).^2;     
   FT_phase1= (((angle(y1(1:floor(n/2))))) * 180/pi);     
   [c1,i1] = max(FT_power1);     
   phase(1) = FT_phase1(i1);

そして、ナイキストとサンプリング周波数パラメータを使用する理由については十分に理解していると思います。ただし、出力の配列に対して同じ手順を実行することを想定しています (つまり、私が持っている別のサブルーチンからの正弦波です)。これは、出力配列に 2 つの列があることを意味します。最初の列は時間ベクトル用で、2 番目の列は実際の正弦応答。では、fs パラメータを組み込むにはどうすればよいでしょうか。私は突然混乱しています。詳細が必要な場合はお知らせください。ありがとうございました。

4

1 に答える 1

1

私があなたの質問を正しく理解していれば、あなたの新しい配列は実際には 2 次元配列であり、最初の次元はサンプルが取得された時間を表し、2 番目の次元は正弦波のサンプルを表します。

FFT を介して新しい配列を処理するには、単に時間次元を無視し、サンプル次元 (正弦波データ サンプル) のみを使用します。

この場合もナイキストレートが適用されます。正弦波は、FFT で解決したい最大周波数の 2 倍 (またはそれ以上) でサンプリングする必要があります。

FFT はサンプリング周波数を使用して、FFT 出力の周波数軸を適切にスケーリングします。

ナイキスト・シャノンのサンプリング定理については、ここですべて学ぶことができます:サンプリング定理

于 2013-02-13T18:45:29.107 に答える