Yanlış bir şey yapmıyorsunuz, ancak görmeyi beklediğiniz şeyleri de dikkatle düşünmüyorsunuz, bu yüzden sonuçta şaşırıyorsunuz. Soru 1 için, varsayımınız yakın, ama aslında geriye doğru bir şeyler var; bu ikincinizi rahatsız eden sayısal gürültüdür, birincinizi değil.
Resimler yardımcı olabilir. İlk deneme için büyüklük ve fazın şemaları:
x = Cos[2.0 \[Pi] 200 Range[0, 1, 1/1000]];
fx = Fourier[x];
ListLinePlot[Abs[fx], PlotRange -> All]
ListLinePlot[Arg[fx], PlotRange -> All]
İkincisi:
x = Cos[2.0 \[Pi] 200 Range[0, 1 - 1/1000, 1/1000]];
fx = Fourier[x];
ListLinePlot[Abs[fx], PlotRange -> All]
ListLinePlot[Arg[fx], PlotRange -> All]
Peki burada neler oluyor? İkincisi açıklamak en kolayı. Birincisi, ikincisinin FFT'si, büyüklük spektrumunda görünen iki tepe hariç her yerde sıfır genliğe sahiptir; bu, 1000 veri noktası kullanan FFT'nin tanımının formun frekanslarını döndürdüğü için takip ederk / 1000 için 0 ≤ k ≤ 999ve dolayısıyla sinyaliniz tam olarak bir frekans bölmesine düşer . Sonuç olarak, diğer 998 noktada sinyaliniz tamamen kayan nokta hataları nedeniyle makine gürültüsünden kaynaklanır ve bu nedenle faz spektrumunuz saçmalıktır, çünkü tam anlamıyla sahte sayıların fazıdır.
Bununla birlikte, birincisi için, FFT'nin tanımı formun frekanslarını kapsar k / 1001 için 0 ≤ k ≤ 1000sinyal frekansınız , 200 / , 1000biçiminde olmayan k / 1001. Sonuç olarak, sinyaliniz spektral sızıntı ile genişletilir ve neredeyse her yerde sıfırdan farklı olacaktır. Faz planının fiziksel formu hakkında yorum yapmayacağım, ancak kapalı bir analitik formu kabul ettiğini söyleyeceğim.
Genel olarak, sadece faz açısı grafiklerinin bilgi iletmek için gerçekten kötü bir fikir olduğunu düşünüyorum, tam da bu nedenle; Birincisi, düşük genlikli çöp veya gerçek sinyal fazına bakıp bakmadığınızı söyleyemezsiniz ve ikincisi, çeviri değişmez değildir ve basit girişler için tamamen şaşırtıcı grafikler elde etmek kolaydır. Çok daha iyi, eğer hala faz bilgisi taşıyan bir şey arıyorsanız, faz ve genlik bilgisini aynı anda aynı şekilde tasvir eden bir grafiktir, örneğin fazın renk tonu olarak kodlandığı ve büyüklüğün parlaklık olarak kodlandığı bir grafik gibi.
EK: Mathematica'dan önceki paragrafta belirttiğim ilkeyi gösteren birkaç resim:
hue = Compile[{{z, _Complex}}, {(1.0 Arg[-z] + \[Pi])/(2 \[Pi]),
Exp[1 - Max[Abs[z], 1]], Min[Abs[z], 1]},
CompilationTarget -> "C", RuntimeAttributes -> {Listable}];
L = 500;
data = Table[Boole[x <= 11 && y <= 11], {x, L}, {y, L}];
Image[hue@
RotateRight[
10 RotateRight[Fourier[RotateRight[data, {-5, -5}]], {L/2, L/2}]],
ColorSpace -> Hue, Magnification -> 1]
Image[hue@
RotateRight[
10 RotateRight[Fourier[RotateRight[data, {-4, -4}]], {L/2, L/2}]],
ColorSpace -> Hue, Magnification -> 1]
Image[hue@
RotateRight[
10 RotateRight[Fourier[RotateRight[data, {0, 0}]], {L/2, L/2}]],
ColorSpace -> Hue, Magnification -> 1]
Üç görüntü de aynı giriş sinyalinin 2D Fourier dönüşümleridir (bir 11 × 11 1'lerin uzunluğuna sıfırlarla doldurulmuş kare 500 × 500), ancak girişler 5, 4 ve 0 ve 200 veri noktası ile döngüsel olarak döndürülmüştür. Büyüklük spektrumları (piksel parlaklığı ile kodlanmış) aynıdır, ancak faz spektrumları tamamen farklıdır! Faz kodlaması, 1 kırmızı ile eşleşecek şekilde yapılır,ben yeşil ile eşleşir, - 1 camgöbeği ile eşleştirir ve - benmor eşler. Faz spektrumlarının kaydırmaz değişmez olduğunu ve dolayısıyla insanın görsel anlayışına uygun olmadığını söylediğimde bunu kastediyorum. Örneğin, 200 veri noktasının döngüsel kaymasıyla, fazda neler olduğunu söylemek tamamen imkansızdır, çünkü sadece statik gibi görünür, ancak giriş sinyali diğer giriş durumlarından daha karmaşık değildir.