2017-04-20 21 views
2

주파수 도메인 위상 편이를 구현하려고하지만 확실하지 않은 점이 적습니다.주파수 도메인 위상 편이, 진폭, 희망 크기 및 비선형 성

1- 호프 크기가 ​​50 % 인 해닝 창을 사용하여 사인 신호 또는 스위프 신호에서 완벽한 재구성을 얻을 수 있습니다. 그럼에도 불구하고 홉 크기> 50 %를 사용할 때 어떻게 결과를 표준화해야합니까?

2- 낮은 주파수 신호 (f < 100, 창 크기 < 1024, fs = 44100)의 위상을 이동할 때 내 결과에서 일부 비선형 성을 명확하게 볼 수 있습니다. 이것은 창 크기가 저주파수에서 짧아지기 때문입니까?

도움 주셔서 감사합니다.

clear 
freq=500; 
fs=44100; 
endTime=0.02; 
t = 1/fs:1/fs:(endTime); 
f1=linspace(freq,freq,fs*endTime); 
x = sin(2*pi*f1.*t); 
targetLength=numel(x); 

L=1024; 
w=hanning(L); 
H=L*.50;% Hopsize of 50% 
N=1024; 

%match input length with window length 
x=[zeros(L,1);x';zeros(L+mod(length(x),H),1)]; 

pend=length(x)- L ; 
pin=0; 
count=1; 
X=zeros(N,1); 
buffer0pad= zeros(N,1); 
outBuffer0pad= zeros(L,1); 
y=zeros(length(x),1); 
delay=-.00001; 
df = fs/N; 
f= -fs/2:df:fs/2 - df; 

while pin<pend 

    buffer = x(pin+1:pin+L).*w; 

    %append zero padding in the middle 
    buffer0pad(1:(L)/2)=buffer((L)/2+1: L); 
    buffer0pad(N-(L)/2+1:N)=buffer(1:(L)/2); 

    X = fft(buffer0pad,N); 

    % Phase modification 
    X = abs(X).*exp(1i*(angle(X))-(1i*2*pi*f'*delay)); 

    outBuffer=real(ifft(X,N)); 

    % undo zero padding---------------------- 
    outBuffer0pad(1:L/2)=outBuffer(N-(L/2-1): N); 
    outBuffer0pad(L/2+1:L)=outBuffer(1:(L)/2); 

    %Overlap-add 
    y(pin+1:pin+L) = y(pin+1:pin+L) + outBuffer0pad; 

    pin=pin+H; 
    count=count+1; 
end 

%match output length with original input length 
output=y(L+1:numel(y)-(L+mod(targetLength,H))); 

figure(2) 
plot(t,x(L+1:numel(x)-(L+mod(targetLength,H)))) 
hold on 
plot(t,output) 
hold off 

답변

0

FFT 창에서 100Hz 미만의 신호는 두 개 미만입니다. DFT 또는 FFT는 아주 다른 주파수의 정현파 전체를 합산하여 하나의 비 정수주기 사인파를 비롯한 모든 파형을 나타냅니다. 예 : 단지 하나 이상입니다. 그것이 바로 수학이 작동하는 방법입니다.

2 사이클 미만의 폰 한 (von Hann) 윈도우의 경우 이들은 종종 완전히 다른 주파수의 묶음입니다 (저주파에서 퍼센티지로 보면 아주 멀리 떨어져있을 수 있습니다). 모든 완전히 다른 주파수의 위상을 변경하면 원하는 양만큼 창 주파수가 낮은 사인 곡선을 이동시킬 수도 있고하지 않을 수도 있습니다 (신호가 정수 -주기와 얼마나 다른지에 따라 다름).

또한 낮은 주파수의 경우 복소 공액 미러가 완전히 실제 결과를 나타 내기 위해 위상이 반대 방향으로 시프트되어야합니다. 그래서 당신은 2 개의 겹쳐진 위상과 반대의 위상 변화를 섞어 버리게됩니다. 이것은 낮은 주파수 신호가 DFT 조리개에서 정수주기와 거리가 멀다는 것이 대부분입니다.

시간과 샘플이 더 긴 창을 사용하면 주어진 주파수의 더 많은 사이클을 내부에 맞출 수 있습니다 (따라서 낮은 주파수의 사인파를 구성해야만 낮은 주파수를 구성, 구성 또는 합성 할 수 있습니다). 주파수 정현파); 복소 공액 복소수는 FFT 결과 bin 인덱스면에서 더 멀리 떨어져 간섭을 감소시킨다.

50 %/(일부 정수) 길이의 폰 한 창을 사용하는 시퀀스는 첫 번째 또는 마지막 창을 제외하고는 손실이 없습니다. 다른 모든 홉 크기는 정보를 변조하거나 파괴하므로 재구성을 위해 상수로 정규화 할 수 없습니다.

+0

답변 해 주셔서 감사합니다. 이전 버전의 코드에서는 음의 주파수를 반대 방향으로 시프트했지만 위상 수정이 적용될 때 진폭 변화가 발생했습니다. 그런 다음 현재 버전의 코드로 되돌아갔습니다. 답변에 저주파가 무엇인지 명시 해주십시오. 왜 반대 방향으로 음의 저주파수 만 이동해야합니까? – papaya

+0

배열이 공액 대칭을 유지하도록 위상을 수정하지 않으면 복잡한 결과가 발생합니다. 너가 원하는게 그거야? – hotpaw2

+0

예, 감사합니다. 잘 작동하는 것 같습니다. – papaya