Main Content

fftshift

영주파수 성분(DC 성분)을 스펙트럼의 가운데로 이동

설명

예제

Y = fftshift(X)는 영주파수 성분을 배열의 가운데로 이동시켜 푸리에 변환 X를 재배열합니다.

  • X가 벡터인 경우 fftshiftX의 왼쪽 절반과 오른쪽 절반을 바꿉니다.

  • X가 행렬인 경우 fftshiftX의 첫 번째 사분면을 세 번째 사분면으로 바꾸고 두 번째 사분면을 네 번째 사분면으로 바꿉니다.

  • X가 다차원 배열인 경우 fftshift는 각 차원을 따라 X의 "공간의 절반"을 교체합니다.

예제

Y = fftshift(X,dim)X의 차원 dim을 따라 동작합니다. 예를 들어 X가 행이 여러 개의 1차원 변환을 나타내는 행렬인 경우 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 object. The axes object contains an object of type line.

영주파수 성분을 이동시키고 0이 중심이 되는 전력을 플로팅합니다.

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.

1차원 신호를 행렬의 행으로 표현하여 여러 개의 1차원 신호를 처리할 수 있습니다. 그런 다음 차원 인수를 사용하여 푸리에 변환을 계산하고 각 행의 영주파수 성분을 이동시킵니다.

행이 2개의 1차원 신호로 표현되는 행렬 A를 만들고 각 신호의 푸리에 변환을 계산합니다. 각 신호의 전력을 플로팅합니다.

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.

영주파수 성분을 이동시키고 0이 중심이 되는 각 신호의 전력을 플로팅합니다.

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.

입력 인수

모두 축소

입력 배열로, 벡터, 행렬 또는 다차원 배열로 지정됩니다.

데이터형: double | single | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical
복소수 지원 여부:

연산을 수행할 차원으로, 양의 정수 스칼라로 지정됩니다. 값이 지정되지 않은 경우 fftshift는 모든 차원을 따라 바꿉니다.

  • 입력 행렬 Xc가 있다고 가정합니다. 연산 fftshift(Xc,1)Xc의 각 열의 절반의 위치를 서로 바꿉니다.

    fftshift(Xc,1) column-wise operation

  • 행렬 Xr이 있다고 가정합니다. 연산 fftshift(Xr,2)Xr의 각 행의 절반의 위치를 서로 바꿉니다.

    fftshift(Xr,2) row-wise operation

데이터형: double | single | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical

확장 기능

C/C++ 코드 생성
MATLAB® Coder™를 사용하여 C 코드나 C++ 코드를 생성할 수 있습니다.

GPU 코드 생성
GPU Coder™를 사용하여 NVIDIA® GPU용 CUDA® 코드를 생성할 수 있습니다.

버전 내역

R2006a 이전에 개발됨

참고 항목

| | | |