Scilab Home page | Wiki | Bug tracker | Forge | Mailing list archives | ATOMS | File exchange
Please login or create an account
Change language to: English - Português - 日本語 - Русский
Aide de Scilab >> Traitement du Signal > Tranformées > ifftshift

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 rapide.
  • flipdim — inverse l'ordre des (blocs de) lignes, colonnes, pages.. d'un tableau.

Historique

VersionDescription
6.0.2 Option along ajoutée.
Scilab Enterprises
Copyright (c) 2011-2017 (Scilab Enterprises)
Copyright (c) 1989-2012 (INRIA)
Copyright (c) 1989-2007 (ENPC)
with contributors
Last updated:
Thu Feb 14 14:59:55 CET 2019