Why dosent my fourier output simulate the input?
1 vue (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Jamie Chambers
le 18 Fév 2017
Commenté : Jamie Chambers
le 20 Fév 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
1 commentaire
Réponse acceptée
Frank Macias-Escriva
le 19 Fév 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
Plus de réponses (0)
Voir également
Catégories
En savoir plus sur Calculus dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!