Форум сайта python.su
Здравствуйте, форумчане! =)
Для дипломной работы, которую я делаю на python'е, мне понадобилось использовать быстрое преобразование Фурье от массива. Я нашёл функцию rfft2 в библиотеки NumPy, которая это умеет делать, вид этой функции: rfft2 (x, s=None, axes=(-2, -1)). Где x - это массив. Help к этой функции плохой. Подскажите, пожалуйста:
1. Что значат два последних аргумента в этой функции? (хоть они и по умолчанию имеют значения, но учитель требует чтобы я их знал если собираюсь её использовать).
2. Подскажите альтернативную функцию, но только с кроссплатформенной библиотеки.
Офлайн
s is a sequence giving the shape of the input
an result along the transformed axes, as n for fft.
Это все что я могу сказать :D
The n-dimensional fft of a. s is a sequence giving the shape of the inputвот полная справка
an result along the transformed axes, as n for fft. Results are packed
analogously to fft: the term for zero frequency in all axes is in the
low-order corner, while the term for the Nyquist frequency in all axes is
in the middle.
If neither s nor axes is specified, the transform is taken along all
axes. If s is specified and axes is not, the last len(s) axes are used.
If axes are specified and s is not, the input shape along the specified
axes is used. If s and axes are both specified and are not the same
length, an exception is raised.
Отредактировано (Дек. 9, 2009 23:29:23)
Офлайн
Насколько понял: rfft2 - это двухмерное дискретное преобразование Фурье, axis - задают в многомерном массиве две оси вдоль которых оно будет вычисляться, если у вас входной массив двухмерный то значение по умолчанию (-2,-1) - то что вам надо. s - массив из двух целых значений - сколько членов вдоль каждой оси вы хотите получить в итоге.
ЗЫ: вы уверены что вам нужно именно это преобразование? может rfft (x, n=None, axis=-1) - одномерное дискретное, x - входной массив. n - количество членов на выходе, axis - ось.
ЗЗЫ: у NumPy прекрасная документация http://www.tramy.us/numpybook.pdf, вы плохой не видели
Офлайн
PooH, а почему оси должны иметь именно такое значение? И если я вас правильно понял, то “s” определяет размерность выходного массива?
Отредактировано (Дек. 10, 2009 22:11:36)
Офлайн
Я написал:
dx=dy=256
I_f=rfft2(IxB,s=[dx,dy])
Офлайн
ХомячокНу вот смотрите у вас двухмерный массив, оси 0 и 1. Для него (-2, -1) - как раз и будут 0 и 1 оси. Для трехмерного массива по умолчанию будут предпоследняя и последняя оси.
PooH, а почему оси должны иметь именно такое значение?
ХомячокВ доке сказано:
И если я вас правильно понял, то “s” определяет размерность выходного массива?
If s is None it defaults to the shape of x. The real fft will be computed along the last axis specified in axes while a full fft will be computed in the otherсравним для одномерного варианта rfft
dimension.
rfft (x, n=None, axis=-1)То есть по последней оси он вам возвращает s/2+1 - членов, там где частотв положительные, а для предпоследней возвращает полное.
Compute the first n//2+1 points of the n-point discrete Fourier transform of
the real valued data along the given axis. The returned array will be just
the first half of the fft, corresponding to positive frequencies: rfft(x) ==
fft(x)
Офлайн
Спасибо большое! Функция fft2 мне, кажется, подходит.
Офлайн