Add fftshift ,fft with size ,and their test.
This commit is contained in:
@@ -334,8 +334,8 @@ TEST_F(Function2D_Test, median) {
|
||||
TEST_F(Function2D_Test, fftAndComplexAndIfft){
|
||||
double *input = new double[20]{1,1,0,2,2,0,1,1,0,2,1,1,0,2,2,0,1,1,0,2};
|
||||
auto ma = Aurora::Matrix::fromRawData(input,10,2);
|
||||
auto ret = Aurora::fft(ma);
|
||||
std::complex<double>* result = (std::complex<double>*)ret.getData();
|
||||
auto fftrett = Aurora::fft(ma);
|
||||
std::complex<double>* result = (std::complex<double>*)fftrett.getData();
|
||||
//检验fft结果与matlab是否对应
|
||||
EXPECT_DOUBLE_EQ(0.0729, fourDecimalRound(result[1].real()));
|
||||
EXPECT_DOUBLE_EQ(2.4899, fourDecimalRound(result[2].imag()));
|
||||
@@ -344,12 +344,33 @@ TEST_F(Function2D_Test, fftAndComplexAndIfft){
|
||||
//检验fft的结果是否共轭
|
||||
EXPECT_DOUBLE_EQ(0, result[4].imag()+result[6].imag());
|
||||
EXPECT_DOUBLE_EQ(0, result[4].real()-result[6].real());
|
||||
ret= Aurora::ifft(ret);
|
||||
auto ret= Aurora::ifft(fftrett);
|
||||
std::complex<double>* ifftResult = (std::complex<double>*)ret.getData();
|
||||
EXPECT_DOUBLE_EQ(fourDecimalRound(ifftResult[1].real()),1.0);
|
||||
EXPECT_DOUBLE_EQ(fourDecimalRound(ifftResult[3].real()),2.0);
|
||||
EXPECT_DOUBLE_EQ(fourDecimalRound(ifftResult[11].real()),1.0);
|
||||
EXPECT_DOUBLE_EQ(fourDecimalRound(ifftResult[13].real()),2.0);
|
||||
Aurora::fftshift(fftrett);
|
||||
EXPECT_DOUBLE_EQ(0.0729, fourDecimalRound(result[6].real()));
|
||||
EXPECT_DOUBLE_EQ(2.4899, fourDecimalRound(result[7].imag()));
|
||||
EXPECT_DOUBLE_EQ(-2., fourDecimalRound(result[10].real()));
|
||||
EXPECT_DOUBLE_EQ(-0.2245, fourDecimalRound(result[11].imag()));
|
||||
|
||||
auto fftrett2 = Aurora::fft(ma,5);
|
||||
auto result2 = (std::complex<double>*)fftrett2.getData();
|
||||
//检验fft结果与matlab是否对应
|
||||
EXPECT_DOUBLE_EQ(0.3090, fourDecimalRound(result2[1].real()));
|
||||
EXPECT_DOUBLE_EQ(-1.3143, fourDecimalRound(result2[2].imag()));
|
||||
EXPECT_DOUBLE_EQ(-0.8090, fourDecimalRound(result2[7].real()));
|
||||
EXPECT_DOUBLE_EQ(1.3143, fourDecimalRound(result2[8].imag()));
|
||||
|
||||
auto fftrett3 = Aurora::fft(ma,12);
|
||||
auto result3 = (std::complex<double>*)fftrett3.getData();
|
||||
//检验fft结果与matlab是否对应
|
||||
EXPECT_DOUBLE_EQ(-1.0, fourDecimalRound(result3[1].real()));
|
||||
EXPECT_DOUBLE_EQ(-3.4641, fourDecimalRound(result3[4].imag()));
|
||||
EXPECT_DOUBLE_EQ(-1.0, fourDecimalRound(result3[13].real()));
|
||||
EXPECT_DOUBLE_EQ(-3.4641, fourDecimalRound(result3[16].imag()));
|
||||
}
|
||||
|
||||
TEST_F(Function2D_Test, hilbert) {
|
||||
|
||||
Reference in New Issue
Block a user