fftshift

Переключите нулевую частотную составляющую в центр спектра

Описание

пример

Y = fftshift(X) перестраивает преобразование Фурье X путем сдвига нулевой частотной составляющей к центру массива.

  • Если X вектор, затем fftshift подкачивает левые и правые половины X.

  • Если X матрица, затем fftshift подкачивает первый квадрант X с третьим, и второй квадрант с четвертым.

  • Если X многомерный массив, затем fftshift полупространства подкачек X по каждому измерению.

пример

Y = fftshift(X,dim) управляет по измерению dim из X. Например, если X матрица, строки которой представляют несколько 1D преобразований, затем fftshift(X,2) подкачивает половины каждой строки X.

Примеры

свернуть все

Подкачайте левые и правые половины вектора-строки. Если вектор имеет нечетное число элементов, то средний элемент рассматривается частью левой половины вектора.

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

При анализе частотных составляющих сигналов может быть полезно переключить нулевые частотные составляющие в центр.

Создайте S сигнала, вычислите его преобразование Фурье и постройте степень.

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)

Переключите нулевые частотные составляющие и постройте сосредоточенную нулем степень.

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)

Можно обработать несколько 1D сигналов путем представления их как строк в матрице. Затем используйте аргумент размерности, чтобы вычислить преобразование Фурье и переключить нулевые частотные составляющие для каждой строки.

Создайте матричный A чьи строки представляют два 1D сигнала и вычисляют преобразование Фурье каждого сигнала. Постройте степень для каждого сигнала.

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,:))

Переключите нулевые частотные составляющие и постройте сосредоточенную нулем степень каждого сигнала.

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,:))

Входные параметры

свернуть все

Входной массив в виде вектора, матрицы или многомерного массива.

Типы данных: double | single | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical
Поддержка комплексного числа: Да

Величина для работы, заданная как положительный целый скаляр. Если никакое значение не задано, то fftshift подкачки по всем измерениям.

  • Считайте входную матрицу Xc. Операция fftshift(Xc,1) половины подкачек каждого столбца Xc.

  • Рассмотрите матричный Xr. Операция fftshift(Xr,2) половины подкачек каждой строки Xr.

Типы данных: double | single | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical

Расширенные возможности

Генерация кода C/C++
Генерация кода C и C++ с помощью MATLAB® Coder™.

Генерация кода графического процессора
Сгенерируйте код CUDA® для NVIDIA® графические процессоры с помощью GPU Coder™.

Смотрите также

| | | |

Представлено до R2006a