Borrar filtros
Borrar filtros

Why dosent my fourier output simulate the input?

1 visualización (últimos 30 días)
Jamie  Chambers
Jamie Chambers el 18 de Feb. de 2017
Comentada: Jamie Chambers el 20 de Feb. de 2017
This is my input signal:
clc
clear all
syms L psi f(x) t
L=2*pi;
psi=pi;
f(x)=(t-psi)^2;
ezplot(f(x),[0,2*pi])
xlabel ('period 0,2*pi')
ylabel ('amplitude')
title ('input signal')
pretty(f(x))
I'm trying to plot the Fourier using this code:
clc
clear all
syms n m L t psi x
L=2*pi;
psi=pi
f(x)=(t-psi)^2
A0=int(f(x),t,0,2*pi)/L
ezplot(A0,[0,2*pi])
hold on
for m=1:10
An=int(f(x)*cos(n*t),t,0,L)*(L/1);
An=subs(An,n,m);
Bn=int(f(x)*sin(n*t),t,0,L)*(L/1);
Bn=subs(Bn,n,m);
Fo=A0+sum((An*cos(n*pi)/L)*f(x)+(Bn*sin(n*pi)/L)*f(x))
Fo=subs(Fo,n,m);
ezplot(Fo,[0,2*pi])
ylim auto
hold on
end
I've tried numerous attempts but cant seen to generate the simulated input???? what a I doing wrong? Regards J

Respuesta aceptada

Frank Macias-Escriva
Frank Macias-Escriva el 19 de Feb. de 2017
Try this code bellow:
syms t n;
L = 2*pi;
f(t) = (t-pi)^2;
figure('Name', 'Original signal');
ezplot(f(t), [0, L]);
ylim auto;
N = 100;
A0 = int(f(t), t, 0, L)/L;
A(n) = int(f(t)*cos(n*t), t, 0, L) * (2/L);
B(n) = int(f(t)*sin(n*t), t, 0, L) * (2/L);
Fo(t) = A0 + symsum(A(n)*cos(n*t) + B(n)*sin(n*t), n, 1, N);
figure('Name', 'Generated signal');
ezplot(Fo(t), [0, L]);
ylim auto;
In this code, you avoid using for loops and keep using the symbolic toolbox for the entire solution. Also, note te use of "symsum" instead of "sum". Play with N for getting different accuracies of the generated signal.
Best,
fm

Más respuestas (0)

Etiquetas

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by