Sponsored Content
Operating Systems OS X (Apple) FFT for Python 2.0.x to 3.7.0. Post 303021904 by wisecracker on Monday 20th of August 2018 09:54:44 AM
Old 08-20-2018
FFT for Python 2.0.x to 3.7.0.

Hi guys...
This is code that was originally designed to work on an upgraded AMIGA A1200 using Python 2.0.x.
Unfortunately it broke inside much later versions, NOT because of the print statement/function but other minor subtleties. So this is the final result tested on various machines including the desired one.
The print(FFT) function also acts correctly, (even in Python 1.4.0 believe it or not), so there is no need to alter it for any Python version from 2.0.x to the current 3.7.0; just delete it as it is only there for this DEMO...
More information inside the code and as can be seen tested on various platforms and machines.
Code:
#
# SIMPLE_FFT.py
# For Python Version(s) 2.0.x to 3.7.0...
# 20 August 2018, CC0, Public Domain Licence.
#
# TESTED ON:
#
# Python 2.0 (#1, Oct 29 2000, 23:53:20)  (SAS/C 6.x] on amiga
#
# Python 2.7.10 (default, Oct  6 2017, 22:29:07)
# [GCC 4.2.1 Compatible Apple LLVM 9.0.0 (clang-900.0.31)] on darwin
#
# Python 3.5.2 (v3.5.2:4def2a2901a5, Jun 26 2016, 10:47:25)
# [GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
#
# Python 3.7.0 (v7.7.0:1bf9cc5093, Jun 27 2018,04:59:51) [MSC v.1914 64 bit
# (AMD64)] on win32
#
# Python 2.7.15rc1 (default, Apr 15 2018, 21:51:34)
# [GCC 7.3.0] on linux2

# This is a builtin, no external libraries required.
import cmath

def fft(DATA):
	N=len(DATA)
	if N<=1: return DATA
	EVEN=fft([DATA[K] for K in range(0,N,2)])
	ODD=fft([DATA[K] for K in range(1,N,2)])
	L=[EVEN[K]+cmath.exp(-2j*cmath.pi*K/N)*ODD[K] for K in range(int(N/2))]
	R=[EVEN[K]-cmath.exp(-2j*cmath.pi*K/N)*ODD[K] for K in range(int(N/2))]
	return L+R

# NOTE: Although not necessary, for best results, DATA sizes be in powers of 2.
# http://www.bitweenie.com/listings/fft-zero-padding/
# Single cycle square wave, 8 samples.
FFT_LIST=[1.0, 1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0]

FFT=fft(FFT_LIST)
print(FFT)

# Correct results, within limits of floating point accuracy, should read:
# -----------------------------------------------------------------------
#
# [(4+0j), (1-2.414213562373095j), 0j, (1-0.4142135623730949j), 0j,
# (0.9999999999999999+0.4142135623730949j), 0j,
# (0.9999999999999997+2.414213562373095j)]

 

9 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

what is python?

I heard that its a new programming language but ill like to get a deeper explaination of it. (1 Reply)
Discussion started by: kprescod4158
1 Replies

2. Programming

Python: bash-shell-like less functionality in the python shell

Hello, Is there some type of functional way to read things in the Python shell interpreter similar to less or more in the bash (and other) command line shells? Example: >>> import subprocess >>> help(subprocess) ... ... I'm hoping so as I hate scrolling and love how less works with... (0 Replies)
Discussion started by: Narnie
0 Replies

3. Ubuntu

Python 3.1 vs 2.6?

i just found python 3.1 in the Ubuntu Software Center today... yes i know, i've probably been under a rock... but my question is, would installing 3.1 cause any conflicts with the 2.6 installation in terms of retro compatibility with python based apps? i don't know if 3.1 is supposed to replace... (0 Replies)
Discussion started by: Sterist
0 Replies

4. SuSE

"ssh suse-server 'python -V' > python-version.out" not redirecting

Okay, so I have had this problem on openSUSE, and Debian systems now and I am hoping for a little help. I think it has something to do with Python but I couldn't find a proper Python area here. I am trying to redirect the output of "ssh suse-server 'python -V'" to a file. It seems that no matter... (3 Replies)
Discussion started by: Druonysus
3 Replies

5. Shell Programming and Scripting

**python** unable to read the background color in python

I am working on requirement on spreadsheet in python scripting. I have a spreadsheet containing cell values and with background color. I am able to read the value value but unable to get the background color of that particular cell. Actually my requirement is to read the cell value along... (1 Reply)
Discussion started by: giridhar276
1 Replies

6. OS X (Apple)

FFT for the AMIGA through ksh88 shell.

I don't know if anyone is interested but I have been meddling with FFT for the AMIGA. (Sadly we AMIGAns don't have these luxuries through any scripting language. Below is a Python snippet that uses the builtin 'cmath' module to work with the lowly Python 2.0.1 for the AMIGA. It is part of a... (0 Replies)
Discussion started by: wisecracker
0 Replies

7. OS X (Apple)

Slow FFT in ksh93 and awk.

Well i set myself a challenge to have an FFT function using nothing but ksh93 and awk. It took some serious jiggery pokery and concentration with all the brackets and '$' characters but here is the result. It is RADIX 2 only, but hey, show me another UNIX shell script that does it. It IS SLOW but... (17 Replies)
Discussion started by: wisecracker
17 Replies

8. Windows & DOS: Issues & Discussions

How to execute python script on remote with python way..?

Hi all, I am trying to run below python code for connecting remote windows machine from unix to run an python file exist on that remote windows machine.. Below is the code I am trying: #!/usr/bin/env python import wmi c = wmi.WMI("xxxxx", user="xxxx", password="xxxxxxx")... (1 Reply)
Discussion started by: onenessboy
1 Replies

9. Programming

Create a C source and compile inside Python 1.4.0 to 3.7.0 in Python for ALL? platforms...

Hi all... As you know I like making code backwards compatible for as many platforms as possible. This Python script was in fact dedicated for the AMIGA A1200 using Pythons 1.4.0, 1.5.2, 1.6.0, 2.0.1, and 2.4.6 as that is all we have for varying levels of upgrades from a HDD and 4MB FastRam... (1 Reply)
Discussion started by: wisecracker
1 Replies
FFT(3)							User Contributed Perl Documentation						    FFT(3)

NAME
PDL::FFT - FFTs for PDL DESCRIPTION
FFTs for PDL. These work for arrays of any dimension, although ones with small prime factors are likely to be the quickest. Each routine works `inplace'. SYNOPSIS
use PDL::FFT qw/:Func/; fft($real,$imag); ifft($real,$imag); realfft($real); realifft($real); fftnd($real,$imag); ifftnd($real,$imag); $kernel = kernctr($image,$smallk); fftconvolve($image,$kernel); ALTERNATIVE FFT PACKAGES
Various other modules - such as PDL::FFTW and PDL::Slatec - contain FFT routines. However, unlike PDL::FFT, these modules are optional, and so may not be installed. FUNCTIONS
fft Signature: ([o,nc]real(n); [o,nc]imag(n)) Complex FFT of the "real" and "imag" arrays [inplace] ifft Signature: ([o,nc]real(n); [o,nc]imag(n)) Complex Inverse FFT of the "real" and "imag" arrays [inplace] realfft() One-dimensional FFT of real function [inplace]. The real part of the transform ends up in the first half of the array and the imaginary part of the transform ends up in the second half of the array. realfft($real); realifft() Inverse of one-dimensional realfft routine [inplace]. realifft($real); fftnd() N-dimensional FFT (inplace) fftnd($real,$imag); ifftnd() N-dimensional inverse FFT ifftnd($real,$imag); fftconvolve() N-dimensional convolution $kernel = kernctr($image,$smallk); fftconvolve($image,$kernel); fftconvolve works inplace, and returns an error array in kernel as an accuracy check -- all the values in it should be negligible. The sizes of the image and the kernel must be the same. kernctr centres a small kernel to emulate the behaviour of the direct convolution routines. The speed cross-over between using straight convolution (PDL::Image2D::conv2d()) and these fft routines is for kernel sizes roughly 7x7. kernctr() `centre' a kernel (auxiliary routine to fftconvolve) $kernel = kernctr($image,$smallk); fftconvolve($image,$kernel); kernctr centres a small kernel to emulate the behaviour of the direct convolution routines. convmath Signature: ([o,nc]a(m); [o,nc]b(m)) Internal routine doing maths for convolution cmul Signature: (ar(); ai(); br(); bi(); [o]cr(); [o]ci()) Complex multiplication cdiv Signature: (ar(); ai(); br(); bi(); [o]cr(); [o]ci()) Complex division BUGS
Where the source is marked `FIX', could re-implement using phase-shift factors on the transforms and some real-space bookkeeping, to save some temporary space and redundant transforms. AUTHOR
This file copyright (C) 1997, 1998 R.J.R. Williams (rjrw@ast.leeds.ac.uk), Karl Glazebrook (kgb@aaoepp.aao.gov.au), Tuomas J. Lukka, (lukka@husc.harvard.edu). All rights reserved. There is no warranty. You are allowed to redistribute this software / documentation under certain conditions. For details, see the file COPYING in the PDL distribution. If this file is separated from the PDL distribution, the copyright notice should be included in the file. perl v5.8.0 2003-01-29 FFT(3)
All times are GMT -4. The time now is 05:06 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy