C++ 实现 fftshift 代码示例
时间: 2023-08-07 07:05:51 浏览: 154
以下是 C++ 实现 fftshift 的代码示例:
```cpp
#include <iostream>
#include <complex>
#include <vector>
// fftshift函数
void fftshift(std::vector<std::complex<double>>& data)
{
int n = data.size();
int k = (n + 1) / 2;
for (int i = 0; i < k; i++) {
std::swap(data[i], data[i + k]);
}
}
int main()
{
// 测试数据
std::vector<std::complex<double>> data = {
{1, 2}, {3, 4}, {5, 6}, {7, 8}
};
// 输出原始数据
std::cout << "原始数据:" << std::endl;
for (auto d : data) {
std::cout << d << " ";
}
std::cout << std::endl;
// 调用fftshift函数
fftshift(data);
// 输出fftshift后的数据
std::cout << "fftshift后的数据:" << std::endl;
for (auto d : data) {
std::cout << d << " ";
}
std::cout << std::endl;
return 0;
}
```
输出结果如下:
```
原始数据:
(1,2) (3,4) (5,6) (7,8)
fftshift后的数据:
(5,6) (7,8) (1,2) (3,4)
```
其中 `std::vector<std::complex<double>>` 表示复数数组,`std::swap` 函数用于交换两个元素的值,实现了将数组的前半部分和后半部分交换的功能。