Fix fftshift bug

This commit is contained in:
kradchen
2023-11-20 17:43:31 +08:00
parent 761aea2acc
commit 4edb2d133d

View File

@@ -862,13 +862,13 @@ void Aurora::fftshift(Matrix &aMatrix){
int backwardLength = aMatrix.getDimSize(0)/2; int backwardLength = aMatrix.getDimSize(0)/2;
if (aMatrix.getDimSize(0)%2!=0)++backwardLength; if (aMatrix.getDimSize(0)%2!=0)++backwardLength;
int forwardLength = aMatrix.getDimSize(0) - backwardLength; int forwardLength = aMatrix.getDimSize(0) - backwardLength;
float* buffer = malloc(forwardLength,true); float* buffer = malloc(backwardLength,true);
int valueStep = aMatrix.isComplex()?2:1; int valueStep = aMatrix.isComplex()?2:1;
for (int i = 0; i<aMatrix.getDimSize(1); ++i) { for (int i = 0; i<aMatrix.getDimSize(1); ++i) {
float* dataPtr = aMatrix.getData()+aMatrix.getDimSize(0)*i*valueStep; float* dataPtr = aMatrix.getData()+aMatrix.getDimSize(0)*i*valueStep;
cblas_scopy(forwardLength*valueStep, dataPtr+backwardLength*valueStep, 1, buffer, 1); cblas_scopy(backwardLength*valueStep, dataPtr, 1, buffer, 1);
cblas_scopy(backwardLength*valueStep, dataPtr, 1, dataPtr+forwardLength*valueStep, 1); cblas_scopy(forwardLength*valueStep, dataPtr+backwardLength*valueStep, 1, dataPtr, 1);
cblas_scopy(forwardLength*valueStep, buffer, 1, dataPtr, 1); cblas_scopy(backwardLength*valueStep, buffer, 1, dataPtr+forwardLength*valueStep, 1);
} }
Aurora::free(buffer); Aurora::free(buffer);
} }