Уведомления

Группа в Telegram: @pythonsu

#1 Дек. 9, 2009 19:47:47

Хомячок
От:
Зарегистрирован: 2009-12-09
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Помогите разобраться с функцией rfft2 из библиотеки NumPy

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



Офлайн

#2 Дек. 9, 2009 23:27:31

Zubchick
От:
Зарегистрирован: 2009-07-08
Сообщения: 613
Репутация: +  0  -
Профиль   Отправить e-mail  

Помогите разобраться с функцией rfft2 из библиотеки NumPy

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)

Офлайн

#3 Дек. 10, 2009 06:53:55

PooH
От:
Зарегистрирован: 2006-12-05
Сообщения: 1948
Репутация: +  72  -
Профиль   Отправить e-mail  

Помогите разобраться с функцией rfft2 из библиотеки NumPy

Насколько понял: rfft2 - это двухмерное дискретное преобразование Фурье, axis - задают в многомерном массиве две оси вдоль которых оно будет вычисляться, если у вас входной массив двухмерный то значение по умолчанию (-2,-1) - то что вам надо. s - массив из двух целых значений - сколько членов вдоль каждой оси вы хотите получить в итоге.

ЗЫ: вы уверены что вам нужно именно это преобразование? может rfft (x, n=None, axis=-1) - одномерное дискретное, x - входной массив. n - количество членов на выходе, axis - ось.
ЗЗЫ: у NumPy прекрасная документация http://www.tramy.us/numpybook.pdf, вы плохой не видели



Вот здесь один из первых отарков съел лаборанта. Это был такой умный отарк, что понимал даже теорию относительности. Он разговаривал с лаборантом, а потом бросился на него и загрыз…

Офлайн

#4 Дек. 10, 2009 15:25:36

Хомячок
От:
Зарегистрирован: 2009-12-09
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Помогите разобраться с функцией rfft2 из библиотеки NumPy

PooH, а почему оси должны иметь именно такое значение? И если я вас правильно понял, то “s” определяет размерность выходного массива?



Отредактировано (Дек. 10, 2009 22:11:36)

Офлайн

#5 Дек. 10, 2009 22:10:32

Хомячок
От:
Зарегистрирован: 2009-12-09
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Помогите разобраться с функцией rfft2 из библиотеки NumPy

Я написал:

dx=dy=256
I_f=rfft2(IxB,s=[dx,dy])
И получил I_f размерностью 256*129, а не 256*256 как исходный массив. Если не указывать “s”, то получается то же самое… Как мне получить массив размерностью 256*256 на выходе?



Офлайн

#6 Дек. 11, 2009 06:17:46

PooH
От:
Зарегистрирован: 2006-12-05
Сообщения: 1948
Репутация: +  72  -
Профиль   Отправить e-mail  

Помогите разобраться с функцией rfft2 из библиотеки NumPy

Хомячок
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? Извините, последний раз с преобразованием Фурье дело имел в институте, так что помню слабо.



Вот здесь один из первых отарков съел лаборанта. Это был такой умный отарк, что понимал даже теорию относительности. Он разговаривал с лаборантом, а потом бросился на него и загрыз…

Офлайн

#7 Дек. 12, 2009 16:51:31

Хомячок
От:
Зарегистрирован: 2009-12-09
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Помогите разобраться с функцией rfft2 из библиотеки NumPy

Спасибо большое! Функция fft2 мне, кажется, подходит.



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version