Main Content

이 번역 페이지는 최신 내용을 담고 있지 않습니다. 최신 내용을 영문으로 보려면 여기를 클릭하십시오.

fft

iddata 객체의 고속 푸리에 변환(FFT)

설명

datf = fft(data)는 고속 푸리에 변환(FFT) 알고리즘을 사용하여 시간 영역 iddata 객체 데이터를 주파수 영역 iddata 객체 datf로 변환합니다. data는 실수 값 신호를 포함하고 상수 샘플 시간 Ts를 가지며, datf는 0에서 나이퀴스트 주파수까지 균등하게 분포된 주파수 값을 가집니다. 나이퀴스트 주파수는 신호 길이가 짝수이면 포함되고 길이가 홀수이면 포함되지 않습니다. 신호 파워와 잡음 수준을 유지하기 위해 FFT는 각 변환을 신호 길이의 제곱근으로 나눔으로써 정규화됩니다.

예제

datf = fft(data,N)은 변환 길이 N을 지정합니다. 기본적으로 변환 길이는 신호 길이에 의해 결정됩니다. N을 포함하면 data의 신호가 N보다 짧을 경우 FFT 변환이 0으로 채워지고 그렇지 않을 경우 신호가 잘립니다. 따라서 실수 신호의 경우 주파수 개수는 N이 짝수일 때 (N/2)+1이고 N이 홀수일 때 (N+1)/2입니다. data에 실험이 여러 개 포함된 경우 N은 길이가 그만큼인 행 벡터일 수 있습니다.

예제

datf = fft(data,N,'complex')는 음수 주파수 포함을 지정합니다. 실수 신호의 경우 datf가 음수가 아닌 주파수만 포함하는 것이 디폴트 값인 반면, 복소수 값 신호의 경우에는 항상 음수 주파수가 포함됩니다. 실수의 경우 음수 주파수를 강제로 적용하려면 'complex'를 추가하십시오.

예제

예제

모두 축소

300개의 샘플이 포함된 시간 영역 데이터 z1을 불러와 플로팅합니다.

load iddata1 z1;
plot(z1)

데이터를 주파수 영역으로 변환하고 플로팅합니다.

datf = fft(z1);
plot(datf)

데이터를 불러옵니다. fft를 사용해 변환 길이 N100으로 하여 시간 영역 데이터 z1을 주파수 영역으로 변환합니다.

load iddata1 z1;
datf = fft(z1, 100);
plot(datf)

데이터를 불러옵니다. 2개의 주파수 영역 객체 zf1zf2를 생성하는데, 이때 zf2 생성 시에 음수 주파수를 포함하도록 'complex'를 사용합니다.

결과를 비교합니다.

load iddata1 z1
zf1 = fft(z1,300);
zf2 = fft(z1,300,'complex');
h = plot(zf2,zf1);
legend('zf2','zf1')
opt = getoptions(h);
opt.FreqScale = 'linear';
opt.PhaseMatching = 'on';
setoptions(h,opt)
xlim([-32 32])

입력 인수

모두 축소

시간 영역 데이터로, iddata 객체로 지정됩니다.

변환 길이로, 정수 스칼라로 지정되거나 다중 실험 데이터의 경우 정수로 구성된 행 벡터로 지정됩니다. 기본적으로 N의 각 요소는 대응하는 신호 길이와 같습니다.

출력 인수

모두 축소

주파수 영역 데이터로, iddata 객체로 반환됩니다.

fft는 기본 MATLAB® fft 함수와 동일한 답을 생성하지 않습니다.

  • 실수 신호의 경우 기본적으로 fft는 주파수 범위의 양수 부분에 대해서만 FFT를 계산하며, MATLAB fft는 전체 주파수 범위에 대해 FFT를 계산합니다.

  • fft1/sqrt(N)로 결과를 스케일링하는데, 여기서 N은 데이터 길이입니다. MATLAB fft는 스케일링을 적용하지 않습니다.

버전 내역

R2007a에 개발됨

참고 항목

| |