fftshift

Сдвиньте компонент нулевой частоты к центру спектра

Описание

пример

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

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

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

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

пример

Y = fftshift(X,dim) действует вдоль размерности dim от X. Для примера, если X - матрица, строки которой представляют несколько 1-D преобразований, затем 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)

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

Сдвиньте компоненты нулевой частоты и постройте график нулевой степени.

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. The axes contains an object of type line.

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

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

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. The axes contains 2 objects of type line.

Сдвиньте компоненты нулевой частоты и постройте график нулевой степени каждого сигнала.

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. The axes contains 2 objects of type line.

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

свернуть все

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

Типы данных: 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++ с помощью Coder™ MATLAB ®

.

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

.

См. также

| | | |

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