FFT가“미러링 된”이유는 무엇입니까?


36

간단한 신호의 FFT 플롯을 수행하면 다음과 같습니다.

t = 0:0.01:1 ;
N = max(size(t));
x = 1 + sin( 2*pi*t ) ;
y = abs( fft( x ) ) ;
stem( N*t, y )

1Hz 정현파 + DC

1Hz

위의 FFT

fft

첫 번째 빈의 숫자는 신호에 "DC의 양"이라는 것을 이해합니다.

y(1)  %DC
  > 101.0000

두 번째 빈의 숫자는 "전체 신호에 대한 1 사이클의 양"이어야합니다.

y(2)  %1 cycle in the N samples
  > 50.6665

그러나 101이 아닙니다! 약 50.5입니다.

fft 신호의 끝에 다른 크기의 항목이 있습니다.

y(101)
  > 50.2971

다시 50.5.

제 질문은 왜 FFT가 이렇게 미러링됩니까? y(2)101 인치가 아닌가? (물론, 101 개의 모든 빈은 1Hz 정현파를 가지고 있습니까?)

수행하는 것이 정확합니까?

mid = round( N/2 ) ;

% Prepend y(1), then add y(2:middle) with the mirror FLIPPED vector
% from y(middle+1:end)
z = [ y(1), y( 2:mid ) + fliplr( y(mid+1:end) ) ];

stem( z )

FFT 벡터의 후반 반전 및 추가

여기에 이미지 설명을 입력하십시오

이제 오른쪽에 미러링 된 부분이 올바르게 추가되어 원하는 "FFT의 모든 101 빈에 1Hz 정현파가 포함되어 있습니다"라고 생각했습니다.

>> z(2)

ans =

  100.5943

비슷한 질문이 여기에 답변되었습니다 : dsp.stackexchange.com/questions/3466/…
pichenettes

그러나 이것은 신호의 대칭 에 관한 것입니다 (허 메시 안 대칭이라고 믿습니까?).
bobobobo

순수 실수 신호 F (k) = conj (F (Nk))의 경우, 순수 실수 신호의 푸리에 변환이 대칭 인 이유입니다.
WebMonster

신호 : 1 + cos (2 * pi t) ... 그리고 1 + i cos (2 * pi t) ... 그리고 1 + i sin (2 * pi * t) 이면 어떤 결과를 기대할 수 있습니까 ? ...
pichenettes

2
푸리에 복소 지수 함수로 끊기는 신호를 변환하고, 정현파의 합이므로 2 개 복소 지수 함수. dsp.stackexchange.com/a/449/29
endolith

답변:


39

실제 신호는 푸리에 변환의 특성으로 인해 푸리에 변환의 실수와 음의 절반에서 "미러링"됩니다. 푸리에 변환은 다음과 같이 정의됩니다.

H(f)=h(t)ej2πftdt

기본적으로 신호는 고유 한 주파수를 갖는 복잡한 정현파와 관련이 있습니다. 복잡한 정현파는 어떻게 생겼습니까? 아래 그림은 하나의 복잡한 정현파를 보여줍니다.

여기에 이미지 설명을 입력하십시오 여기에 이미지 설명을 입력하십시오 여기에 이미지 설명을 입력하십시오

"코르크 스크류"는 시간에 따라 회전하는 복잡한 정현파 인 반면, 그 뒤에 오는 두 개의 정현파는 복잡한 정현파의 추출 된 실수 성분과 허수 성분입니다. 영리한 독자는 실제 구성 요소와 가상 구성 요소가 정확히 동일하다는 것을 알 수 있으며, 90도 ( ) 만큼 서로 위상이 다릅니다 . 그것들은 위상이 90도이기 때문에 직교하며 그 주파수에서 신호의 어떤 구성 요소도 "잡을"수 있습니다.π2

지수와 코사인 / 사인 간의 관계는 오일러의 공식에 의해 주어진다.

ejx=cos(x)+jsin(x)

이를 통해 다음과 같이 푸리에 변환을 수정할 수 있습니다.

H(f)=h(t)ej2πftdt=h(t)(cos(2πft)jsin(2πft))dt

음의 주파수에서 푸리에 변환은 다음과 같습니다.

H(f)=h(t)(cos(2π(f)t)jsin(2π(f)t))dt=h(t)(cos(2πft)+jsin(2πft))dt

음의 주파수 버전과 양의 주파수 버전을 비교하면 사인이 반전 된 동안 코사인이 동일 함을 알 수 있습니다. 그들은 여전히 ​​서로 90도 위상이 다르기 때문에 (음수) 주파수에서 신호 성분을 포착 할 수 있습니다.

포지티브 및 네거티브 주파수 정현파는 모두 90도 위상이 같고 크기가 같기 때문에 동일한 방식으로 실제 신호에 응답합니다. 또는 응답 의 크기 는 동일하지만 상관 단계는 다릅니다.

편집 : 구체적으로, 음의 주파수 상관은 실제 신호에 대한 양의 주파수 상관의 결합입니다 (반전 허수 사인 성분으로 인한). 수학적 용어로 이것은 Dilip이 지적했듯이 다음과 같습니다.

H(f)=[H(f)]

그것에 대해 생각하는 또 다른 방법 :

상상의 구성 요소는 바로 그 것입니다. 이 도구는 추가 평면을 사용하여 사물을 볼 수 있고 미분 방정식을 사용하는 것보다 훨씬 쉽지는 않지만 많은 디지털 (및 아날로그) 신호 처리를 가능하게합니다.

그러나 우리는 자연의 논리적 법칙을 어길 수 없으며, 가상의 내용으로 '로 '실제'를 할 수 없으므로 현실로 돌아 가기 전에 효과적으로 스스로를 취소해야합니다. 이것은 시간 기반 신호 (복잡한 주파수 영역)의 푸리에 변환에서 어떻게 보입니까? 허수 부가 상쇄하는 신호의 양과 음의 주파수 성분을 더하거나 합하면, 양의 요소와 음의 요소가 서로 공액된다는 것을 의미합니다. FT가 시간 신호에서 취해질 때, 각각의 '실제'부분이 크기, 양의 도메인의 절반, 음의 절반을 공유하는 이러한 켤레 신호가 존재하므로 사실상 켤레를 추가하면 상상의 내용과 실제 내용만을 제공합니다.

볼트 의 전압을 만들 수 없다는 의미 입니다. 분명히, 우리는 가상의 숫자를 사용하여 원 편파 EM 파와 같이 2 벡터 값을 갖는 실제 신호를 나타낼 수 있습니다.5i


좋은 대답-하나의 작은 이쑤시개, 나는 "하나가 서로 연관되어 있기 때문에, 다른 하나도 정확히 같은 크기와 90도 위상 편이를 가지게됩니다." 그러나 당신이 말하려고하는 것을 알고 있습니다. 사인은 사인 (스코어 1)과 관련이 있지만 코사인과 전혀 관련이 없습니다 (스코어 0). 그것들은 같은 신호이지만 결국 다른 위상을 가지고 있습니다.
Spacey

네가 옳아. 또 다른 심각한 문제가 있습니다. 나중에 고칠 것입니다.
Jim Clay

푸리에 변환에 대한 일반적인 이론을 제시하는 대신 DFT에 관한 질문에 제목에 FFT라고 대답하면 대답을 편집 할 수 있다면 좋을 것입니다.
Dilip Sarwate

@DilipSarwate 저의 목표는 질문자가 이해하도록 돕는 것이며, 제 접근 방식이 최선이라고 생각합니다. 그러나 이산 수학을 해본 것에 대한 귀하의 답변을 찬성했습니다.
Jim Clay

@JimClay 당신의 접근 방식은 크게 dsp.SE의 전체 독자에 의해 평가, 그리고 당신이 당신의 대답에 의해 진정으로 훌륭한 대답 할 수있는 시간을 찾을 수 있기를 바랍니다있다 명시 적으로 포함하여 현재 추론 독자 방치 무엇을 당신의 대답을 : 즉를 . 방정식은 가 실수 값 신호일 때 (따라서 ) 임을 나타내고 이것은 OP가 요구 한 "미러링"입니다. 다시 말해서, 나는 당신이 (이전의 의견에서 요청한 바와 같이) 실제로 질문 된 질문에보다 잘 반응하도록 답변을 편집 할 것을 요청합니다. H(f)=[H(f)]|H(f)|=|H(f)|x(t)
Dilip Sarwate

20

FFT가 (또는 고속 푸리에 변환) 실제로 인 알고리즘 의 연산에 대한 이산 푸리에 변환 또는 DFT. 전형적인 구현 은 데이터 포인트의 수 이 복합 정수라는 사실을 이용함으로써 종래의 DFT 계산에 비해 속도를 향상시킨다 . 은 소수 이기 때문에 여기서는 그렇지 않다 . (FFT가 이 소수 인 경우에는 FFT가 존재하지만 MATLAB에서 구현되거나 구현되지 않을 수있는 다른 공식을 사용합니다). 실제로 많은 사람들 이 FFT를 통해 DFT 계산 속도를 높이기 위해 을 또는 형식 으로 선택합니다 .N101NN2k4k

미러링이 발생하는 이유에 대한 질문으로 hotpaw2는 근본적으로 그 이유를 설명 했으므로 다음은 세부 사항을 채우는 내용입니다. 데이터 포인트 의 시퀀스 의 는 시퀀스 정의된다 여기서 , 여기서 . 그것은 명백 할 것이다 그 이며, 일반적으로 A의 복소 순서에도 하는 실수 순서. 하지만 언제x=(x[0],x[1],x[2],,x[N1])NX=(X[0],X[1],X[2],,X[N1])

X[m]=n=0N1x[n](exp(j2πmN))n,m=0,1,,N1
j=1Xxx 는 실수 시퀀스이고 은 실수입니다. 또한 이 짝수 이면 이기 때문에 은 실수입니다. 그러나, 여부에 관계없이의 홀수, 심지어는 DFT 실제 값 시퀀스의 가 에르 미트 대칭 당신이 코멘트에 언급 된 것을 속성을. 우리는 모든 고정 ,X[0]=n=0N1x[n]exp ( j π ) = 1 X [ NNexp(jπ)=1
X[N2]=n=0N1x[n](exp(j2πN/2N))n=n=0N1x[n](1)n
NXx m1mN1, 따라서 , . 특별한 경우로, 이 짝수 일 때 선택 하면 이므로 초기 결론
X[m]=n=0N1x[n](exp(j2πmN))nX[Nm]=n=0N1x[n](exp(j2πNmN))n=n=0N1x[n](exp(j2π+j2πmN))n=n=0N1x[n](exp(j2πmN))n=(X[m])
1mN1X[Nm]=(X[m])m=N/2NX[N/2]=(X[N/2])X[N/2]실수입니다. Hermitian 대칭 속성의 효과는

실제 값들의 시퀀스의 DFT 번째 빈은 가지고 동일한 크기 는 AS 번째 빈.m(Nm)

MATLABi 사람들은 MATLAB 배열의 수가 부터 시작한다는 사실을 설명하기 위해 이것을 번역해야 합니다.1


실제 데이터에 의존하여 직류의 값이 을 더한 약간 더 이상의 기간 주파수의 정현파의 Hz의가. 실제로, 당신이 얻는 것은 여기서 입니다. 따라서 샘플 중 첫 번째 샘플 과 마지막 샘플은 동일한 값을 갖습니다. 계산중인 DFT는 의해 주어집니다 과 사이의 불일치로 인해 DFT가 복잡해집니다. 값 x11

x[n]=1+sin(2π(0.01n)), 0n100
x[0]=x[100]=1101
X[m]=n=0100(1+sin(2π(n100)))(exp(j2πm101))n
100101X[m]위한 작게 나마 제로이다. 반면에, 당신은 배열 조정했다 가정 이 당신의 MATLAB 프로그램을 에서 샘플을 촬영 그래서 당신이하는 것을 그러면 DFT는 당신의 DFT가 정확히 (또는 적어도 반올림 오류 내에 있음) 임을 알 수 있으며 DFT는 대해 그것을 줄 것입니다 , 2m99t100t=0,0.01,0.02,,0.99
x[n]=1+sin(2π(0.01n)), 0n99.
X[m]=n=099(1+sin(2π(n100)))(exp(j2πm100))n,
X=(100,50j,0,0,,0,50j)0n99
x[n]=1100m=099X[m](exp(j2πn100))m=1100[10050jexp(j2πn100)1+50j(exp(j2πn100))99]=1+12j[exp(j2πn100)exp(j2πn100)]=1+sin(2π(0.01n))
이것은 정확히 당신이 시작한 것입니다.

따라서 신호가 주기적인지 아닌지를 FFT에 알릴 수 있습니까?
표시 이름

@displayname 그것은 별도의 질문으로, 그 자체로 물어봐야합니다.
Dilip Sarwate

켤레 대칭 빈 ([0 + 0i를 쓰면)을 조심스럽게 들어 올려 ifft를 사용하여 시간 도메인 신호를 재구성하면 재구성 된 시간 도메인 신호의 크기가 절반으로 줄어 듭니다. 자연 스럽습니까, 아니면 툴링 문제입니까? 나는 FFT 출력 정규화와 iFFT 이후의 역전을 처리합니다.
Raj

14

입력 데이터가 실제 인 경우에만 FFT 결과가 켤레 대칭으로 미러링됩니다.

엄밀히 실제 입력 데이터의 경우, FFT 결과의 2 개의 켤레 미러 이미지는 복잡한 정현파의 허수 부분을 상쇄하므로 엄밀한 실제 정현파 (작은 수치 반올림 노이즈 제외)를 합산하여 엄격하게 표현합니다. 진짜 사인파.

FFT 결과가 켤레 미러링되지 않은 경우, 실제 값이 아닌 복잡한 값 (0이 아닌 허수 성분)을 가진 파형을 나타냅니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.