Ви нічого не робите, але також не замислюєтесь над тим, що слід очікувати, і саме тому ви здивовані результату. По першому питанню ваша гіпотеза близька, але ви насправді маєте речі назад; це цифровий шум, який мучить ваш другий, а не ваш перший.
Малюнки можуть допомогти. Ось сюжети величини та фази для першого випробування:
x = Cos[2.0 \[Pi] 200 Range[0, 1, 1/1000]];
fx = Fourier[x];
ListLinePlot[Abs[fx], PlotRange -> All]
ListLinePlot[Arg[fx], PlotRange -> All]
А другий:
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]
То що тут відбувається? Другий - це найлегше пояснити. По-перше, ЗПТ другого має всюди нульову амплітуду, за винятком двох піків, видимих у спектрі величин; це випливає, оскільки визначення FFT з використанням 1000 точок передачі даних повертає частоти форми за , і, отже, ваш сигнал падає точно на відрив частоти. Як результат, в інших 998 точок ваш сигнал цілком обумовлений машинним шумом через помилки з плаваючою комою, а значить, ваш фазовий спектр є нісенітницею, оскільки це буквально фаза псевдовипадкових чисел.к / 10000 ≤ k ≤ 999
Однак для першого визначення FFT охоплює частоти форми для , тоді як частота вашого сигналу - , що не має форми . В результаті ваш сигнал розширюється спектральним витоком , і він буде ненульовим майже скрізь. Я не буду коментувати фізичну форму фазового сюжету, але скажу, що він допускає закриту аналітичну форму.к / 10010 ≤ k ≤ 1000У 200 / 1000к / 1001
Взагалі, я думаю, що графіки фазового кута самі по собі є дійсно поганою ідеєю для передачі інформації саме з цієї причини; по-перше, ви не можете сказати, чи дивитесь ви на фазу сміття з низькою амплітудою чи фактичний сигнал, а по-друге, це не інваріантний переклад, і легко отримати абсолютно дивовижні графіки для простих входів. Набагато краще, якщо ви все ще шукаєте щось, що передає фазову інформацію, це графік, який одночасно зображує інформацію про фазу та амплітуду таким же візуальним чином, як графік, де фаза кодується як відтінок, а величина кодується як яскравість.
ДОДАТОК: Ось кілька фотографій з Mathematica, які ілюструють принцип, який я зазначив у попередньому пункті:
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]
Усі три зображення є двовимірними перетвореннями Фур'є одного і того ж вхідного сигналу ( квадратних площі 1, оброблених нулями довжиною ), але входи циклично обертаються на 5, 4 і 0, і 200 точок даних. Спектри величин (кодуються яскравістю пікселів) однакові, але фазові спектри зовсім інші! Фазове кодування робиться так, що 1 карти червоного кольору, карти зеленого кольору, карти блакитного кольору та11 × 11500 × 500i- 1- якарти на фіолетовий. Це те, що я маю на увазі, коли кажу, що фазові спектри інваріантно не зміщуються і тому не піддаються візуальному розумінню людини. Наприклад, при циклічному зсуві 200 точок даних неможливо сказати, що відбувається у фазі, оскільки це просто виглядає статично, але вхідний сигнал не є складнішим, ніж інші випадки введення.