在python中重新排序FFT

时间:2016-04-20 04:32:13

标签: python fft

我是python和FFT的新手。我在Python中执行了一项小任务来查找给定数量的数据点的重排顺序。

我的目标是为N个数据点提供如下输出。这里N=8,所以我们有3套:

[0, 1, 0, 1, 0, 1, 0, 1]
[0, 0, 1, 1, 0, 0, 1, 1]
[0, 0, 0, 0, 1, 1, 1, 1]

我尝试过的代码如下。有人可以在我错误的地方帮助我,并建议修改代码以产生所需的输出。

le=8
steps=int(math.ceil(math.log(le,2)))

pos2=[]
m=0
for k in range(0,steps):
    x=2**k
    #print x
    pos1=[]    
    for i in range(0,le):
        if m<x:
            pos1.append(0)
            m=m+1
        else:
            pos1.append(1)
            m=0
    pos2.append(pos1)

1 个答案:

答案 0 :(得分:1)

在仅追加0后,您会立即返回附加1个。这是一个逻辑略有不同的工作版本:

import math

le = 8
steps = int(math.ceil(math.log(le, 2)))

pos2 = []
for k in range(0, steps):
    x = 2**k
    pos1 = []
    while len(pos1) < le:
        for i in range(0, x):
            pos1.append(0)
        for i in range(0, x):
            pos1.append(1)
    pos2.append(pos1)
    print pos1

这将打印

[0, 1, 0, 1, 0, 1, 0, 1]
[0, 0, 1, 1, 0, 0, 1, 1]
[0, 0, 0, 0, 1, 1, 1, 1]

这里有一个单行程供你检查:

import math
le = 8

pos2 = [[(i // 2**k) % 2 for i in range(le)] for k in range(int(math.ceil(math.log(le, 2))))]

print pos2