Why dosent my fourier output simulate the input?

1 view (last 30 days)
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

Accepted Answer

Frank Macias-Escriva
Frank Macias-Escriva on 19 Feb 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

More Answers (0)

Categories

Find more on Fourier Analysis and Filtering in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!