fftshift
영주파수 성분(DC 성분)을 스펙트럼의 가운데로 이동
설명
Y = fftshift(
는 영주파수 성분을 배열의 가운데로 이동시켜 푸리에 변환 X
)X
를 재배열합니다.
X
가 벡터인 경우fftshift
는X
의 왼쪽 절반과 오른쪽 절반을 바꿉니다.X
가 행렬인 경우fftshift
는X
의 첫 번째 사분면을 세 번째 사분면으로 바꾸고 두 번째 사분면을 네 번째 사분면으로 바꿉니다.X
가 다차원 배열인 경우fftshift
는 각 차원을 따라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
1차원 신호 이동하기
신호의 주파수 성분을 분석할 때 영주파수 성분을 가운데로 이동시키면 편리할 수 있습니다.
신호 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)
영주파수 성분을 이동시키고 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)
행렬에서 신호 이동하기
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,:))
영주파수 성분을 이동시키고 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,:))
입력 인수
X
— 입력 배열
벡터 | 행렬 | 다차원 배열
입력 배열로, 벡터, 행렬 또는 다차원 배열로 지정됩니다.
데이터형: double
| single
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| logical
복소수 지원 여부: 예
dim
— 연산을 수행할 차원
양의 정수 스칼라
연산을 수행할 차원으로, 양의 정수 스칼라로 지정됩니다. 값이 지정되지 않은 경우 fftshift
는 모든 차원을 따라 바꿉니다.
입력 행렬
Xc
가 있다고 가정합니다. 연산fftshift(Xc,1)
은Xc
의 각 열의 절반의 위치를 서로 바꿉니다.행렬
Xr
이 있다고 가정합니다. 연산fftshift(Xr,2)
는Xr
의 각 행의 절반의 위치를 서로 바꿉니다.
데이터형: double
| single
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| logical
확장 기능
C/C++ 코드 생성
MATLAB® Coder™를 사용하여 C 코드나 C++ 코드를 생성할 수 있습니다.
GPU 코드 생성
GPU Coder™를 사용하여 NVIDIA® GPU용 CUDA® 코드를 생성할 수 있습니다.
스레드 기반 환경
MATLAB®의 backgroundPool
을 사용해 백그라운드에서 코드를 실행하거나 Parallel Computing Toolbox™의 ThreadPool
을 사용해 코드 실행 속도를 높일 수 있습니다.
이 함수는 스레드 기반 환경을 완전히 지원합니다. 자세한 내용은 스레드 기반 환경에서 MATLAB 함수 실행하기 항목을 참조하십시오.
GPU 배열
Parallel Computing Toolbox™를 사용해 GPU(그래픽스 처리 장치)에서 실행하여 코드 실행 속도를 높일 수 있습니다.
이 함수는 GPU 배열을 완전히 지원합니다. 자세한 내용은 GPU에서 MATLAB 함수 실행하기 (Parallel Computing Toolbox) 항목을 참조하십시오.
분산 배열
Parallel Computing Toolbox™를 사용하여 대규모 배열을 클러스터의 결합된 메모리에 걸쳐 분할할 수 있습니다.
이 함수는 분산 배열을 완전히 지원합니다. 자세한 내용은 분산 배열을 사용하여 MATLAB 함수 실행 (Parallel Computing Toolbox) 항목을 참조하십시오.
버전 내역
R2006a 이전에 개발됨
MATLAB 명령
다음 MATLAB 명령에 해당하는 링크를 클릭했습니다.
명령을 실행하려면 MATLAB 명령 창에 입력하십시오. 웹 브라우저는 MATLAB 명령을 지원하지 않습니다.
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)