sách gpt4 ai đã đi

Fft ngược tạo ra đầu ra gần đúng nhưng sai

In lại 作者:行者123 更新时间:2023-11-28 03:02:25 29 4
mua khóa gpt4 Nike

我正在执行 radix-2 dif 逆 fft。我正在使用共轭和缩放的属性来返回结果。我共轭我的输入 vector ,执行常规 radix-2 fft(不是 ifft),共轭结果,然后按 1.0/N 缩放。但是,我没有得到正确的结果:

int main(){ 
const int n = 4;
complex x[n];

// Test signal

x[0] = complex(10,0);
x[1] = complex(-2,0);
x[2] = complex(-2,2);
x[3] = complex(-2,-2);

print(x,n);

fft_inverse(x,n);

print(x,n);

}
//dif fft. works
void fft(complex X[], int N){
if(N == 1){return;}

complex *temp = new complex[N];
for(int i=0; i
temp[i]=X[i];
}
for(int i = 0; i
complex tw(cos(-2*M_PI*i/N),sin(-2*M_PI*i/N));
X[i] = temp[i] + temp[i+N/2];
X[i+N/2] = temp[i]-temp[i+N/2];
X[i+N/2] = X[i+N/2]*tw;
}

fft(X,N/2);
fft(X+N/2,N/2);
}
void fft_inverse(complex X[], int N){
//conjugate
for(int i = 0; i<>
X[i] = conj(X[i]);
}
//perform fft
fft(X,N);
//conjugate again
for(int i = 0; i<>
X[i] = conj(X[i]);
}
//scale by 1.0/N
double norm_N = 1.0/N;
for(int i = 0; i<>
X[i] *= norm_N;
}
}

这是我的结果:输入:

(10,0) (-2,0) (-2,2) (-2,-2)

Đầu ra:

(1,-0) (3,1) (2.5,-0.5) (3.5,-0.5)

输出应该是:

(1,0) (2,0) (3,0) (4,0)

这是怎么回事?我已经测试了我的 fft 输出应该是什么并收到了正确的结果,所以我不确定问题是什么。

1 Câu trả lời

看起来您的代码给出了正确的输出,但 bin 的顺序错误:

octave> X = [ 10, -2, -2+2i, -2-2i ] 
X =

10 + 0i -2 + 0i -2 + 2i -2 - 2i

octave> x = ifft(X)
x =

1.00000 + 0.00000i 2.50000 - 0.50000i 3.00000 + 1.00000i 3.50000 - 0.50000i

fft_inverse() 看起来不错,所以我怀疑 fft() 可以使用一些进一步的测试/调试 - 可能是您需要为索引做一些位反转.

关于c++ - 逆 fft 产生接近但错误的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20438933/

29 4 0
行者123
Hồ sơ cá nhân

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá Didi Taxi miễn phí
Mã giảm giá Didi Taxi
Giấy chứng nhận ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com