package FFT_New;
import ComplexOperation.Complex;
import ComplexOperation.ComplexMatrix;
public class FFTShift {
public static ComplexMatrix fftshift(ComplexMatrix cm) {
int m = cm.getRow();
int n = cm.getColoum();
ComplexMatrix result = new ComplexMatrix(m,n);
int m2 = m/2;
int n2 = n/2;
int i,j,tmp;
for(i = 0; i < m; i++) {
tmp = (i+m2)%m;
for(j = 0; j < n; j++) {
result.setvalue(tmp, j, cm.getElement(i, j));
}
}
cm=result;
result = new ComplexMatrix(m,n);
for(j = 0; j < n; j++) {
tmp = (j+n2)%n;
for(i = 0; i < m; i++) {
result.setvalue(i, tmp, cm.getElement(i, j));
}
}
return result;
}
public static ComplexMatrix ifftshift(ComplexMatrix cm) {
int m = cm.getRow();
int n = cm.getColoum();
ComplexMatrix result = new ComplexMatrix(m,n);
//如果矩阵总数为偶数
if(m*n%2==0) {
int m2 = m/2;
int n2 = n/2;
int i,j,tmp;
for(i = 0; i < m; i++) {
tmp = (i+m2)%m;
for(j = 0; j < n; j++) {
result.setvalue(tmp, j, cm.getElement(i, j));
}
}
cm=result;
result = new ComplexMatrix(m,n);
for(j = 0; j < n; j++) {
tmp = (j+n2)%n;
for(i = 0; i < m; i++) {
result.setvalue(i, tmp, cm.getElement(i, j));
}
}
return result;
}
//如果矩阵总数为奇数
else {
int m2 = m/2;
int n2 = n/2;
int i,j,tmp;
for(i = 0; i < m; i++) {
tmp = (i+m2+1)%m;
for(j = 0; j < n; j++) {
result.setvalue(tmp, j, cm.getElement(i, j));
}
}
cm=result;
result = new ComplexMatrix(m,n);
for(j = 0; j < n; j++) {
tmp = (j+n2+1)%n;
for(i = 0; i < m; i++) {
result.setvalue(i, tmp, cm.getElement(i, j));
}
}
return result;
}
}
}
转载于:https://my.oschina.net/zzw922cn/blog/471010