# Aprite il programma R e inserite con il copia e incolla # la funzione "onda"; chiamatela con "onda(1)", "onda(2)", # "onda(50)", ecc. per plottare le somme parziali della # serie di Fourier per l'onda quadra. onda <- function(k) # plot di 4/pi*[sin(x) + 1/3*sin(3x) + ... + 1/(2k-1)*sin(((2k-1)x)] { n <- 2*k-1 x <- seq(0, 2*pi, 0.01) y <- sin(rep(seq(1,n,2),each=length(x))*x) y <- 4/pi*rep(1/seq(1,n,2),each=length(x))*y z <- matrix(y,ncol=(n+1)/2,nrow=length(x)) w <- apply(z,1,sum) plot(x,w,type="l") } # Data un'onda (un segnale), con la trasformata di Fourier veloce # (Fast Fourier Transform, FFT) # otteniamo i valori di ampiezza e di frequenza di tutte le sotto-onde # che la compongono: x <- seq(0,2*pi,0.001) y <- 1/2*sin(20*x) + sin(50*x) plot(x,y,type="l") plot(abs(fft(y))[1:100],type="h")