Scilab Website | Contribute with GitLab | Mailing list archives | ATOMS toolboxes
Scilab Online Help
2024.0.0 - Français


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

  • fftshift — rearranges the fft output, moving the zero frequency to the center of the spectrum
  • fft — Transformée de Fourier discrète directe ou inverse uni-, bi-, ou N-dimensionnelle
  • flipdim — inverse l'ordre des (blocs de) lignes, colonnes, pages.. d'un tableau.

Historique

VersionDescription
6.0.2 Option along ajoutée.
Report an issue
<< hilb Tranformées bilt >>

Copyright (c) 2022-2024 (Dassault Systèmes)
Copyright (c) 2017-2022 (ESI Group)
Copyright (c) 2011-2017 (Scilab Enterprises)
Copyright (c) 1989-2012 (INRIA)
Copyright (c) 1989-2007 (ENPC)
with contributors
Last updated:
Tue Oct 24 14:34:14 CEST 2023