Transformata Fouriera - home.agh.edu.plhome.agh.edu.pl/~morchel/files/mownit2/zajecia11.pdf ·...
Transcript of Transformata Fouriera - home.agh.edu.plhome.agh.edu.pl/~morchel/files/mownit2/zajecia11.pdf ·...
Transformata Fouriera
Marcin Orchel
1 Zadania
1.1 Zadania na 3.0
Napisać skrypt w R. W skrypcie
• Dla sumy funkcji trygonometrycznych wykonać analizę częstotliwościową.
• Dodać szum do danych i powtórzyć eksperyment.
• Dokonać analizy częstotliwościowej na wybranym rzeczywistym szeregu czasowymz sezonowością.
• przetestować fft i operację odwrotną
• narysować wykres częstotliwości i amplitudy
• przetestować różne wartości fazy za pomocą atan2
• dokonać transformacji dwuwymiarowej i trójwymiarowej
• obliczyć współczynnik Fouriera wybranej funkcji
• Dodać komentarz do skryptu opisujący krótko na czym polegają użyte metodyoraz wnioski z badań.
Wskazówki:
• http://www.wolframalpha.com/input/?i=sin+(x),+x+over+(0,1)
• jak wyplotować fazę https://www.gaussianwaves.com/2015/11/interpreting-fft-results-obtaining-magnitude-and-phase-information/
Wskazówki do R:
• https://stat.ethz.ch/R-manual/R-devel/library/stats/html/fft.html
• https://stat.ethz.ch/R-manual/R-devel/library/stats/html/filter.html
• https://www.rdocumentation.org/packages/dtt/topics/dst
1
• https://www.rdocumentation.org/packages/fftwtools/topics/fftw
• alternatywnie do fft można użyć polecenia https://stat.ethz.ch/R-manual/R-devel/library/stats/html/spectrum.html
• atan2, https://stat.ethz.ch/R-manual/R-devel/library/base/html/Trig.html
• Re, Im, Mod, https://stat.ethz.ch/R-manual/R-devel/library/base/html/complex.html
• http://www.di.fc.ul.pt/~jpn/r/fourier/fourier.html
Wskazówki do Matlaba:
• można dokonać analizy za pomocą sptool
• http://www.mathworks.com/help/matlab/ref/fft.html
Przykłady w R
• plot.frequency.spectrum <- function(X.k, xlimits=c(0,length(X.k))){
plot.data <- cbind(0:(length(X.k)-1), Mod(X.k)/length(X.k))plot.data[2:length(X.k),2] <- 2*plot.data[2:length(X.k),2]plot(plot.data, t="h", lwd=2, main="",
xlab="Frequency (Hz)", ylab="Strength",xlim=xlimits, ylim=c(0,max(Mod(plot.data[,2]))))
}acq.freq <- 100time <- 6ts <- seq(0,time-1/acq.freq,1/acq.freq)f.0 <- 1/timedc.component <- 1component.freqs <- c(3,7,10)component.delay <- c(0,0,0)component.strength <- c(1.5,.5,.75)f <- function(t,w) { dc.component +
sum( component.strength * sin(component.freqs*w*t +component.delay))
}w <- 2*pi*f.0trajectory <- sapply(ts, function(t) f(t,w))head(trajectory,n=30)X.k <- fft(trajectory)plot.frequency.spectrum(X.k, xlimits=c(0,20))
• wyplotowanie przesunięcia
2
X2<-X.kX2[abs(X.k) < 0.01] <- 0phase=atan2(Im(X2),Re(X2))plot(phase)
1.2 Zadania na 4.0
• Dokonać porównania dwóch sygnałów w Matlabie.
Wskazówki:
• http://www.mathworks.com/help/signal/examples/measuring-signal-similarities.html?prodcode=SG&language=en
1.3 Zadania na 5.0
• Dokonać analizy częstotliwościowej wybranego sygnału rzeczywistego w Matlabie.
3