2017-10-02 3 views
1

Ich habe ein Signal y. Das Signal erhält Werte von 0 bis 1. Das Signal wird tatsächlich von dem roten Kanal (von RGB) von einer Smartphone-Kamera abgeleitet, normalisiert, indem alle Werte von dem Raum [0,1, ... 255] auf den Raum [0 abgebildet werden - 1] durch dividieren durch 255. Ich habe ein weiteres Array x zum Speichern der Kamerarahmen 0, 1, 2, 3, ... Was ich tun möchte, ist das Signal y von Zeitdomäne in den Frequenzbereich mit zu konvertieren Java. Ich habe versucht, die angebotene Klasse here zu verwenden.Wie konvertiert man das Signal von der Zeitdomäne in die Frequenzdomäne mit Java

Mein Code ist

fftsize = powtwo(y.size()); //keep samples of a size of power of 2 
Float[] rp = new Float[fftsize]; //rp is real part of signal (= y) 
for(int i=0; i<fftsize; i++){ 
    rp[i]=y.get(i); 
} 

Float[] ip = new Float[fftsize]; //ip is the imaginary part of signal = 0 
for(int i=0; i<fftsize;i++){ 
    ip[i]=0.0f; 
} 
fft(rp,ip); 

wo

public int powtwo(int size){ //this function estimates the next power of 2 (below the given int value). 
while(!(Math.sqrt((double)size)-(int)Math.sqrt((double)size) == 0)){ 
    size--; 
} 
return size; 
} 

Ich bin nicht sicher, ob ich es richtig mache und ich weiß nicht, um die nächsten Schritte für die FFT in den Frequenzbereich Signal Dreh .

Antwort

1

Sie scheinen in Ordnung zu sein, abgesehen von der Tatsache, dass powtwo schrecklich ineffizient ist. (Siehe this question für verschiedene Alternativen, die viel effizienter sind.)

Die FFT, die Sie verwenden, ist "in-place", daher werden die Real/Imaginärteile des Frequenzbereichs in den Eingangsarrays zurückgegeben. Was Sie mit diesen Daten tun, hängt von Ihren spezifischen Anforderungen ab, z. Wenn Sie ein Leistungsspektrum (eine der gebräuchlichsten Anwendungen einer FFT) erzeugen möchten, würden Sie so etwas wie folgt machen:

// ... 

fft(rp,ip); 

Float[] spectrum = new Float[fftsize/2]; 

for (int i = 0; i < fftsize/2; i++) 
{ 
    spectrum[i] = Math.sqrt(rp[i] * rp[i] + ip[i] * ip[i]); 
} 
Verwandte Themen