Serie di Fourier con MATLAB
sapete come si calcola la serie trigonometrica di Fourier con MATLAB?
Risposte
up!
Puoi essere un po' più preciso? Che cosa hai in input? Di cosa vuoi calcolare la serie di fourier? Hai dato un occhiata alla funzione fft (help fft per maggiori informazioni)?
Beh in input ho una funzione. La fft mi restituisce la trasformata di fourier, che io non ho studiato, ma leggendo la documentazione credo proprio sia una cosa diversa. Mi devo calcolare mi i coefficenti della serie trigonometrica e se possibile anche tutta la serie, in modo poi da poterla plottare.
Che avessi una funzione mi era abbastanza chiaro, ma come è rappresentata questa funzione?
"apatriarca":
Che avessi una funzione mi era abbastanza chiaro, ma come è rappresentata questa funzione?
ah ecco

syms x; f = x^2 + 2; subs(f,x,3) %mi da 11
Non ho mai usato il symbolic toolbox di matlab. Ma non puoi usare semplicemente la definizione di serie di fourier? Non sto trovando niente per le serie, solo per la trasformata.
Ho scritto qualcosa del genere ... ma non so ancora del tutto soddisfatto
function [an,bn,res] = fourier_trig(fun, var, half_period, max_val) res_tmp=0; res=0; syms n; an = (1/half_period) .* int(fun.*cos( (n.*pi.*var)./half_period ),var,-half_period,half_period); bn = (1/half_period) .* int(fun.*sin( (n.*pi.*var)./half_period ),var,-half_period,half_period); a0 = subs(an,n,0); res = (a0)/2; for j=1:max_val, an_val = subs(an,n,j); bn_val = subs(bn,n,j); res_tmp = res + an_val .* cos( (j.*pi.*var)./half_period ) + bn_val .* sin( (j.*pi.*var)./half_period ); res_tmp = simplify(res_tmp); res = res_tmp; % disp( ['j: ',num2str(j)] ) % disp( ['an_val: ', num2str(an_val)] ) % disp( ['bn_val: ', num2str(bn_val)] ) % disp( ['res_tmp: ', res_tmp] ) end res = res_tmp;