Plot Fourier Series from a variable

조회 수: 1 (최근 30일)
Andres De Leon
Andres De Leon 2021년 11월 18일
답변: Paul 2021년 11월 18일
I have this program which calculates the Fourier Series of a function. In this case the function is just f(t)=x. It makes the calculation correctly, and it can compute as many terms of the series as I want (in this case only 5 terms). However, I can not plot the series because the whole series is stored in the variable sys_sum. Can someone please help me plotting the series?
Code:
clc; clear all; close all;
syms x k L n
evalin(symengine,'assume(k,Type::Integer)');
%Obtain an and bn
a = @(f,x,k,L) int(f*cos(k*pi*x/L)/L,x,-L,L);
b = @(f,x,k,L) int(f*sin(k*pi*x/L)/L,x,-L,L);
%Fourier Series is calculated
fs = @(f,x,n,L) a(f,x,0,L)/2 + ... %a0/2 a0=an in the interation number 0 [k or n = 0]
symsum(a(f,x,k,L)*cos(k*pi*x/L) + b(f,x,k,L)*sin(k*pi*x/L),k,1,n); %+an*cos(nwt)+bn*sin(nwt)
f = x %Function
pretty(fs(f,x,5,pi)); %fs(f(t), x, n, T) ----- fs(function, variable x, number of terms, period)
sys_sum = fs(f,x,5,pi);

채택된 답변

Paul
Paul 2021년 11월 18일
The easiest way would be to use fplot(). Also, use assume() instead of evalin
syms x k L n
% evalin(symengine,'assume(k,Type::Integer)');
assume(k,'integer')
assume(n,'integer')
%Obtain an and bn
a = @(f,x,k,L) int(f*cos(k*pi*x/L)/L,x,-L,L);
b = @(f,x,k,L) int(f*sin(k*pi*x/L)/L,x,-L,L);
%Fourier Series is calculated
fs = @(f,x,n,L) a(f,x,0,L)/2 + ... %a0/2 a0=an in the interation number 0 [k or n = 0]
symsum(a(f,x,k,L)*cos(k*pi*x/L) + b(f,x,k,L)*sin(k*pi*x/L),k,1,n); %+an*cos(nwt)+bn*sin(nwt)
f = x %Function
f = 
x
pretty(fs(f,x,5,pi)); %fs(f(t), x, n, T) ----- fs(function, variable x, number of terms, period)
sin(3 x) 2 sin(4 x) sin(5 x) 2 ---------- - sin(2 x) - -------- + ---------- + 2 sin(x) 3 2 5
sys_sum = fs(f,x,5,pi);
fplot(sys_sum)

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Calculus에 대해 자세히 알아보기

제품


릴리스

R2018a

Community Treasure Hunt

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

Start Hunting!

Translated by