이 번역 페이지는 최신 내용을 담고 있지 않습니다. 최신 내용을 영문으로 보려면 여기를 클릭하십시오.
ifft
고속 푸리에 역변환(Inverse Fast Fourier Transform)
설명
예제
벡터의 역변환
푸리에 변환과 이 변환의 역은 시공간에서 샘플링된 데이터와 주파수로 샘플링된 데이터 간에 변환을 수행합니다.
벡터를 만든 다음, 이 벡터의 푸리에 변환을 계산합니다.
X = [1 2 3 4 5]; Y = fft(X)
Y = 1×5 complex
15.0000 + 0.0000i -2.5000 + 3.4410i -2.5000 + 0.8123i -2.5000 - 0.8123i -2.5000 - 3.4410i
Y
의 역변환을 계산합니다. 이 역변환은 원래 벡터 X
와 같습니다.
ifft(Y)
ans = 1×5
1 2 3 4 5
단방향 스펙트럼의 역변환
단방향 스펙트럼의 푸리에 역변환, 즉 실수 신호의 푸리에 변환을 구합니다.
주파수 영역에서 단방향 스펙트럼을 불러옵니다. 이 스펙트럼의 샘플링 주파수와 샘플링 주기를 표시합니다.
load Y1spectrum.mat
Fs
Fs = 1000
T
T = 1.0000e-03
단방향 스펙트럼의 복소수 크기를 플로팅합니다.
L1 = length(Y1); f = Fs/(2*L1-1)*(0:L1-1); plot(f,abs(Y1)) xlabel("f (Hz)") ylabel("|Y1(f)|")
시간 영역 신호의 이산 푸리에 변환이 주기적 특성을 가집니다. 여기서 스펙트럼의 첫 번째 절반은 양의 주파수이고 두 번째 절반은 음의 주파수이며, 이 때 첫 번째 요소는 영주파수에 사용되도록 예약됩니다. 실수 신호의 경우 주파수 영역에서의 이산 푸리에 변환은 양방향 스펙트럼입니다. 이때 양의 주파수에서의 스펙트럼은 음의 주파수에서의 스펙트럼의 켤레 복소수이면서 시간 영역에서의 실수 신호의 피크 진폭의 절반입니다. 단방향 스펙트럼의 푸리에 역변환을 구하기 위해 단방향 스펙트럼을 양방향 스펙트럼으로 변환합니다.
Y2 = [Y1(1) Y1(2:end)/2 fliplr(conj(Y1(2:end)))/2];
시간 영역에서 실수 신호를 복원하기 위해 양방향 스펙트럼의 푸리에 역변환을 구합니다.
X = ifft(Y2);
신호를 플로팅합니다.
t = (0:length(X)-1)*T; plot(t,X) xlabel("t (seconds)") ylabel("X(t)")
행렬의 채움 역변환
ifft
함수를 사용하면 변환의 크기를 제어할 수 있습니다.
임의의 3×5 행렬을 만들고 각 행의 8점 푸리에 역변환을 계산합니다. 결과값에서 각 행의 길이는 8입니다.
Y = rand(3,5); n = 8; X = ifft(Y,n,2); size(X)
ans = 1×2
3 8
켤레 대칭 벡터
벡터가 거의 켤레 대칭인 경우, 'symmetric'
옵션을 지정하면 푸리에 역변환을 더 빨리 계산할 수 있습니다. 이 옵션은 출력값이 실수가 되도록 보장하기도 합니다. 계산에서 반올림 오차가 야기되는 경우 거의 켤레 대칭인 데이터가 발생할 수 있습니다.
거의 켤레 대칭인 벡터 Y
를 만들고 이 벡터의 푸리에 역변환을 계산합니다. 그런 다음 거의 0에 가까운 허수부를 제거하는 'symmetric'
옵션을 지정하여 역변환을 계산합니다.
Y = [1 2:4+eps(4) 4:-1:2]
Y = 1×7
1 2 3 4 4 3 2
X = ifft(Y)
X = 1×7
2.7143 -0.7213 -0.0440 -0.0919 -0.0919 -0.0440 -0.7213
Xsym = ifft(Y,'symmetric')
Xsym = 1×7
2.7143 -0.7213 -0.0440 -0.0919 -0.0919 -0.0440 -0.7213
입력 인수
Y
— 입력 배열
벡터 | 행렬 | 다차원 배열
입력 배열로, 벡터, 행렬 또는 다차원 배열로 지정됩니다. Y
가 single
형인 경우 ifft
는 기본적으로 단정밀도로 계산되며 X
또한 single
형이 됩니다. 그렇지 않으면, X
가 double
형으로 반환됩니다.
데이터형: double
| single
| int8
| int16
| int32
| uint8
| uint16
| uint32
| logical
복소수 지원 여부: 예
n
— 역변환 길이
[]
(디폴트 값) | 음이 아닌 정수 스칼라
역변환 길이로, []
또는 음이 아닌 정수 스칼라로 지정됩니다. Y
의 길이보다 큰 변환 길이를 지정하여 Y
를 0으로 채우면 ifft
의 성능을 향상시킬 수 있습니다. 이 길이는 일반적으로 2의 거듭제곱으로 지정되거나 작은 소수의 곱으로 지정됩니다. n
이 신호의 길이보다 작은 경우 ifft
는 n
번째 요소 이후의 나머지 신호 값을 무시하고 잘린 결과를 반환합니다. n
이 0인 경우 ifft
는 빈 행렬을 반환합니다.
데이터형: double
| single
| int8
| int16
| int32
| uint8
| uint16
| uint32
| logical
dim
— 연산을 수행할 차원
양의 정수 스칼라
연산을 수행할 차원으로, 양의 정수 스칼라로 지정됩니다. 기본적으로 dim
은 크기가 1이 아닌 첫 번째 배열 차원입니다. 예를 들어, 행렬 Y
가 있다고 가정합니다.
ifft(Y,[],1)
은 각 열의 푸리에 역변환을 반환합니다.ifft(Y,[],2)
는 각 행의 푸리에 역변환을 반환합니다.
데이터형: double
| single
| int8
| int16
| int32
| uint8
| uint16
| uint32
| logical
symflag
— 대칭 유형
'nonsymmetric'
(디폴트 값) | 'symmetric'
대칭 유형으로, 'nonsymmetric'
이나 'symmetric'
으로 지정됩니다. 반올림 오차로 인해 Y
가 완전한 켤레 대칭이 아니어도 ifft(Y,'symmetric')
은 Y 요소의 두 번째 절반(음수 주파수 스펙트럼에 있음)을 무시하여 Y
가 켤레 대칭인 것처럼 처리합니다. 켤레 대칭에 대한 자세한 내용은 알고리즘 항목을 참조하십시오.
세부 정보
벡터의 이산 푸리에 변환
Y = fft(X)
는 푸리에 변환을 구현하고 X = ifft(Y)
는 푸리에 역변환을 구현합니다. 이 변환은 길이 n
의 X
와 Y
에 대해 다음과 같이 정의됩니다.
여기서
은 n개의 단위근 중 하나입니다.
알고리즘
ifft
함수는Y
의 벡터가 켤레 대칭인지 여부를 테스트합니다.Y
의 벡터가 켤레 대칭이면 역변환 계산 속도가 더 빠르고 출력값은 실수가 됩니다.함수 는 인 경우 켤레 대칭입니다. 하지만 시간 영역 신호의 고속 푸리에 변환에서 스펙트럼의 절반은 양의 주파수이고, 나머지 절반은 음의 주파수입니다. 이때 첫 번째 요소는 영주파수에 사용되도록 예약됩니다. 이런 이유로
v(2:end)
가conj(v(end:-1:2))
와 같을 경우 벡터v
는 켤레 대칭입니다.
확장 기능
C/C++ 코드 생성
MATLAB® Coder™를 사용하여 C 코드나 C++ 코드를 생성할 수 있습니다.
사용법 관련 참고 및 제한 사항:
symflag
가'symmetric'
이 아닌 한, 출력값은 허수부가 모두 0인 경우에도 항상 복소수입니다.코드 생성은 옵션
symmetric
이 지정된 경우에만 대칭 행렬 알고리즘을 사용합니다.가변 크기 데이터와 관련된 제한 사항을 보려면 Variable-Sizing Restrictions for Code Generation of Toolbox Functions (MATLAB Coder) 항목을 참조하십시오.
MEX 출력의 경우, MATLAB® Coder™는 MATLAB이 FFT 알고리즘에 사용하는 라이브러리를 사용합니다. 독립 실행형 C/C++ 코드의 경우, 기본적으로 코드 생성기는 FFT 라이브러리 호출을 생성하는 대신 FFT 알고리즘에 대한 코드를 생성합니다. 설치된 특정 FFTW 라이브러리에 대한 호출을 생성하려면 FFT 라이브러리 콜백 클래스를 제공하십시오. FFT 라이브러리 콜백 클래스에 대한 자세한 내용은
coder.fftw.StandaloneFFTW3Interface
(MATLAB Coder)를 참조하십시오.시뮬레이션 소프트웨어는 MATLAB이 FFT 알고리즘에 사용하는 라이브러리를 사용하여 MATLAB Function 블록을 시뮬레이션합니다. C/C++ 코드 생성 시, 기본적으로 코드 생성기는 FFT 라이브러리 호출을 생성하는 대신 FFT 알고리즘에 대한 코드를 생성합니다. 설치된 특정 FFTW 라이브러리에 대한 호출을 생성하려면 FFT 라이브러리 콜백 클래스를 제공하십시오. FFT 라이브러리 콜백 클래스에 대한 자세한 내용은
coder.fftw.StandaloneFFTW3Interface
(MATLAB Coder)를 참조하십시오.CRL(Code Replacement Library)을 사용하여, Neon 확장이 적용된 ARM® Cortex®-A 프로세서에서 실행되는 최적화된 코드를 생성할 수 있습니다. 이 최적화된 코드를 생성하려면 Embedded Coder® Support Package for ARM Cortex-A Processors (Embedded Coder)를 설치해야 합니다. ARM Cortex-A에 대해 생성된 코드는 Ne10 라이브러리를 사용합니다. 자세한 내용은 Ne10 Conditions for MATLAB Functions to Support ARM Cortex-A Processors (Embedded Coder)를 참조하십시오.
CRL(Code Replacement Library)을 사용하여, ARM Cortex-M 프로세서에서 실행되는 최적화된 코드를 생성할 수 있습니다. 이 최적화된 코드를 생성하려면 Embedded Coder Support Package for ARM Cortex-M Processors (Embedded Coder)를 설치해야 합니다. ARM Cortex-M에 대해 생성된 코드는 CMSIS 라이브러리를 사용합니다. 자세한 내용은 CMSIS Conditions for MATLAB Functions to Support ARM Cortex-M Processors (Embedded Coder)를 참조하십시오.
GPU 코드 생성
GPU Coder™를 사용하여 NVIDIA® GPU용 CUDA® 코드를 생성할 수 있습니다.
사용법 관련 참고 및 제한 사항:
출력값은 복소수입니다.
대칭 유형
'symmetric'
은 지원되지 않습니다.가변 크기 데이터와 관련된 제한 사항을 보려면 Variable-Sizing Restrictions for Code Generation of Toolbox Functions (MATLAB Coder) 항목을 참조하십시오.
스레드 기반 환경
MATLAB®의 backgroundPool
을 사용해 백그라운드에서 코드를 실행하거나 Parallel Computing Toolbox™의 ThreadPool
을 사용해 코드 실행 속도를 높일 수 있습니다.
이 함수는 스레드 기반 환경을 완전히 지원합니다. 자세한 내용은 스레드 기반 환경에서 MATLAB 함수 실행하기 항목을 참조하십시오.
GPU 배열
Parallel Computing Toolbox™를 사용해 GPU(그래픽스 처리 장치)에서 실행하여 코드 실행 속도를 높일 수 있습니다.
사용법 관련 참고 및 제한 사항:
symflag
가'symmetric'
이 아닌 한, 출력값은 허수부가 모두 0인 경우에도 항상 복소수입니다.
자세한 내용은 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)