Calculating Fourier Series Coefficients Using Custom Matlab Function

37 次查看(过去 30 天)
My attempt at creating such a function where it must have the three inputs x, w0, and N:
function[ak] = cal_fs(x, w0, N)
ak = zeros(1,2*N+1); %intialize a row vector of 2N+1 zeros
T = 2*pi/w0; %calculate the period and store in T
syms t;
for k = -N:N
ak = 1/T * int(x * exp(-1i*k*w0*t), t); % ak is fourier coefficient
end
Above is my attempt. I am trying to make a vector ak that contains all the fourier series coefficents as calculated by the equation above. I am new to Matlab and highly confused as to why i do not get an output of a matrix when I do the following:
syms x;
syms t;
x = 2*t;
w0 = 62;
N = 20;
cal_fs(x,w0,N)
  1 个评论
ha9981
ha9981 2012-10-19
The problem is the output of cal_fs is not coming as a vector but rather a symbolic matrix 1x1. What am I doing wrong friends?

请先登录,再进行评论。

回答(2 个)

Alexander
Alexander 2012-10-22
You forgot the index for assigning to ak. Also do you want the indefinite integral or an integral from 0 to 2*pi/w0? I added the index and changed the integral:
function[ak] = cal_fs(x, w0, N)
ak = zeros(1,2*N+1); %intialize a row vector of 2N+1 zeros
T = 2*pi/w0; %calculate the period and store in T
syms t;
for k = -N:N
ak(1,1+k+N) = 1/T * int(x * exp(-1i*k*w0*t), t, 0, T); % ak is fourier coefficient
end

Azzi Abdelmalek
Azzi Abdelmalek 2012-10-22
  1 个评论
Kyon
Kyon 2016-4-8
i have the RMS value and the angle values using the fourier block in simulink
what code to use to use rms and theta to plot fourier series ?

请先登录,再进行评论。

类别

Help CenterFile Exchange 中查找有关 Mathematics 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by