exponenta event banner

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++ с помощью MATLAB ® Coder™

.

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

.

См. также

| | | |

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