Найти - Пользователи
Полная версия: Помогите разобраться с функцией rfft2 из библиотеки NumPy
Начало » Python для новичков » Помогите разобраться с функцией rfft2 из библиотеки NumPy
1
Хомячок
Здравствуйте, форумчане! =)
Для дипломной работы, которую я делаю на python'е, мне понадобилось использовать быстрое преобразование Фурье от массива. Я нашёл функцию rfft2 в библиотеки NumPy, которая это умеет делать, вид этой функции: rfft2 (x, s=None, axes=(-2, -1)). Где x - это массив. Help к этой функции плохой. Подскажите, пожалуйста:
1. Что значат два последних аргумента в этой функции? (хоть они и по умолчанию имеют значения, но учитель требует чтобы я их знал если собираюсь её использовать).
2. Подскажите альтернативную функцию, но только с кроссплатформенной библиотеки.
Zubchick
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.
вот полная справка
PooH
Насколько понял: rfft2 - это двухмерное дискретное преобразование Фурье, axis - задают в многомерном массиве две оси вдоль которых оно будет вычисляться, если у вас входной массив двухмерный то значение по умолчанию (-2,-1) - то что вам надо. s - массив из двух целых значений - сколько членов вдоль каждой оси вы хотите получить в итоге.

ЗЫ: вы уверены что вам нужно именно это преобразование? может rfft (x, n=None, axis=-1) - одномерное дискретное, x - входной массив. n - количество членов на выходе, axis - ось.
ЗЗЫ: у NumPy прекрасная документация http://www.tramy.us/numpybook.pdf, вы плохой не видели
Хомячок
PooH, а почему оси должны иметь именно такое значение? И если я вас правильно понял, то “s” определяет размерность выходного массива?
Хомячок
Я написал:
dx=dy=256
I_f=rfft2(IxB,s=[dx,dy])
И получил I_f размерностью 256*129, а не 256*256 как исходный массив. Если не указывать “s”, то получается то же самое… Как мне получить массив размерностью 256*256 на выходе?
PooH
Хомячок
PooH, а почему оси должны иметь именно такое значение?
Ну вот смотрите у вас двухмерный массив, оси 0 и 1. Для него (-2, -1) - как раз и будут 0 и 1 оси. Для трехмерного массива по умолчанию будут предпоследняя и последняя оси.
Хомячок
И если я вас правильно понял, то “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
dimension.
сравним для одномерного варианта rfft
rfft (x, n=None, axis=-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)
То есть по последней оси он вам возвращает s/2+1 - членов, там где частотв положительные, а для предпоследней возвращает полное.
Если вам надо полное по обоим осям может вам взять функцию fft2? Извините, последний раз с преобразованием Фурье дело имел в институте, так что помню слабо.
Хомячок
Спасибо большое! Функция fft2 мне, кажется, подходит.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB