ifftshift
inverse de fftshift
Séquence d'appel
y = ifftshift(x) y = ifftshift(x, along)
Paramètres
- x, y
vecteurs, matrices, ou hypermatrices de tailles et types identiques.
- along
1 | "r" | 2 | "c" | 0<along<=ndims(x): direction selon laquelle les moitiés sont commutées.
Description
ifftshift(x)
échange les moitiés gauche et droite du vecteur
x
.
Pour les matrices, ifftshift(x)
commute le 1er et le 3ème quadrants,
ainsi que le 2ème et le 4ème quadrants.
Si x
est un tableau multidimensionnel,
ifftshift(x)
commute les "hyper-quadrants" opposés par
rapport au centre du tableau.
y = ifftshift(x,n)
effectue la commutation seulement entre les 2
moitiés de x
selon la dimension n° n
.
ifftshift() est conçue telle que quel que soit x
de tailles paires et/ou impaires,
ifftshift(fftshift(x)) et fftshift(ifftshift(x))
sont toujours égaux à x . |
Exemples
Exemple n° 1 :
Lorsque la taille d'un vecteur (ou d'une dimension>1) est paire,
fftshift()
et ifftshift()
sont équivalentes.
Ce n'est plus le cas lorsque la taille est impaire (les longueurs des 2 "moitiés"
diffèrent alors de 1, et ifftshift
le gère correctement):
even = [1 2 3 4 5 6]; odd = [1 2 3 4 5 6 7]; [fftshift(even) ; ifftshift(even)] [fftshift(odd) ; ifftshift(odd)] // Both are always reciprocal: ifftshift(fftshift(odd)) fftshift(ifftshift(odd))
--> even = [1 2 3 4 5 6]; --> odd = [1 2 3 4 5 6 7]; --> [fftshift(even) ; ifftshift(even)] ans = 4. 5. 6. 1. 2. 3. 4. 5. 6. 1. 2. 3. --> [fftshift(odd) ; ifftshift(odd)] ans = 5. 6. 7. 1. 2. 3. 4. 4. 5. 6. 7. 1. 2. 3. --> // Les deux fonctions sont exactement réciproques : --> ifftshift(fftshift(odd)) ans = 1. 2. 3. 4. 5. 6. 7. --> fftshift(ifftshift(odd)) ans = 1. 2. 3. 4. 5. 6. 7.
Exemple n° 2 :
// Création d'un signal t = 0:0.1:1000; x = 3*sin(t) + 8*sin(3*t) + 0.5*sin(5*t) + 3*rand(t); // Calcul de sa fft y = fft(x, -1); // Inversion du résultat shift = fftshift(y); // Inversion du résultat inversé invShift = ifftshift(shift); // On vérifie qu'on a bien recréé le résultat de départ and(y == invShift)
Exemple n° 3 :
// Création d'une image 2D t = 0:0.1:30; x = 3*sin(t')*cos(2*t) + 8*sin(3*t')*sin(5*t) + .. 0.5*sin(5*t')*sin(5*t) + 3*rand(t')*rand(t); // Calcul de la fft y = fft(x,-1); // Inversion du résultat shift = fftshift(y); // Inversion du résultat inversé invShift = ifftshift(shift); // On vérifie qu'on a bien recréé le résultat de départ and(y == invShift)
Voir aussi
Historique
Version | Description |
6.0.2 | Option along ajoutée. |
Report an issue | ||
<< hilb | Tranformées | bilt >> |