FFT for Python 2.0.x to 3.7.0.


 
Thread Tools Search this Thread
Operating Systems OS X (Apple) FFT for Python 2.0.x to 3.7.0.
# 1  
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)]

Login or Register to Ask a Question

Previous Thread | Next Thread

9 More Discussions You Might Find Interesting

1. 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

2. 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

3. 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

4. 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

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. 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

7. 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

8. 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

9. 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
Login or Register to Ask a Question