Main Content

La traduction de cette page n'est pas à jour. Cliquez ici pour voir la dernière version en anglais.

fftshift

Décaler le composant à fréquence nulle au centre du spectre

Description

Y = fftshift(X) réorganiser une Transformée de Fourier X en décalant le composant à fréquence nulle au centre du tableau.

  • Si X est un vecteur, alors fftshift inverses les moitiés droite et gauche de X.

  • Si X est une matrice, alors fftshift inverse le premier quadrant de X avec le troisième, et le deuxième avec la quatrième.

  • Si X est un tableau multidimensionnel, alors fftshift inverse les demi-espaces de X le long de chaque dimension.

exemple

Y = fftshift(X,dim) opère le long de la dimension dim de X. Par exemple, si X est une matrice dont les lignes représentent plusieurs transformées en 1D, alors fftshift(X,2) inverse les moitiés de chaque ligne de X.

exemple

Exemples

réduire tout

Inversez les moitiés droite et gauche d’un vecteur ligne. Si un vecteur a un nombre impair d’éléments, l’élément du milieu est considéré comme appartenant à la moitié gauche du vecteur.

Xeven = [1 2 3 4 5 6];
fftshift(Xeven)
ans = 1×6

     4     5     6     1     2     3

Xodd = [1 2 3 4 5 6 7];
fftshift(Xodd)
ans = 1×7

     5     6     7     1     2     3     4

Lorsque vous analysez les composants de fréquence des signaux, le fait de décaler les composants à fréquence nulle au centre peut s’avérer pertinent.

Créez un signal S, calculez sa transformée de Fourier et tracez la puissance.

fs = 100;               % sampling frequency
t = 0:(1/fs):(10-1/fs); % time vector
S = cos(2*pi*15*t);
n = length(S);
X = fft(S);
f = (0:n-1)*(fs/n);     %frequency range
power = abs(X).^2/n;    %power
plot(f,power)

Figure contains an axes object. The axes object contains an object of type line.

Décalez les composants à fréquence nulle et tracez la puissance centrée sur zéro.

Y = fftshift(X);
fshift = (-n/2:n/2-1)*(fs/n); % zero-centered frequency range
powershift = abs(Y).^2/n;     % zero-centered power
plot(fshift,powershift)

Figure contains an axes object. The axes object contains an object of type line.

Vous pouvez traiter de multiples signaux 1D en les représentant en tant que lignes dans une matrice. Utilisez ensuite l’argument de dimension pour calculer la transformée de Fourier et décaler les composants à fréquence nulle pour chaque ligne.

Créez une matrice A dont les lignes représentent deux signaux 1D, puis calculez la transformée de Fourier de chaque signal. Tracez la puissante pour chaque signal.

fs = 100;               % sampling frequency
t = 0:(1/fs):(10-1/fs); % time vector
S1 = cos(2*pi*15*t);
S2 = cos(2*pi*30*t);
n = length(S1);
A = [S1; S2];
X = fft(A,[],2);
f = (0:n-1)*(fs/n);     % frequency range
power = abs(X).^2/n;    % power
plot(f,power(1,:),f,power(2,:))

Figure contains an axes object. The axes object contains 2 objects of type line.

Décalez les composants à fréquence nulle et tracez la puissance centrée sur zéro de chaque signal.

Y = fftshift(X,2);
fshift = (-n/2:n/2-1)*(fs/n); % zero-centered frequency range
powershift = abs(Y).^2/n;     % zero-centered power
plot(fshift,powershift(1,:),fshift,powershift(2,:))

Figure contains an axes object. The axes object contains 2 objects of type line.

Arguments d'entrée

réduire tout

Tableau d’entrées, spécifié sous forme de vecteur, de matrice ou de tableau multidimensionnel.

Types de données : double | single | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical
Support des nombres complexes : Oui

Dimension sur laquelle opérer, spécifiée en tant que scalaire entier positif. Si aucune valeur n’est spécifiée, alors fftshift effectue l’inversion le long de toutes les dimensions.

  • Prenez une matrice d’entrées Xc. L’opération fftshift(Xc,1) inverse les moitiés de chaque colonne de Xc.

    fftshift(Xc,1) column-wise operation

  • Prenez une matrice Xr. L’opération fftshift(Xr,2) inverse les moitiés de chaque ligne de Xr.

    fftshift(Xr,2) row-wise operation

Types de données : double | single | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical

Capacités étendues

Génération de code C/C++
Générez du code C et C++ avec MATLAB® Coder™.

Génération de code GPU
Générez du code CUDA® pour les GPU NVIDIA® avec GPU Coder™.

Historique des versions

Introduit avant R2006a

Voir aussi

| | | |