- it's most likely that t will have a higher amount of elements than vector n
- therefore sin(n.*pi.*t) will always find one or more terms (of n) with a numel(n) href = ""</a> numel(t) mismatch

# Sum of fourier series:

101 views (last 30 days)

Show older comments

I just have a quick question. How do I enter the formula shown above? I can't seem to get n = 1, 3, 5, ... I tried different code along the line of this:

syms k x

x = 1/2 + symsum(k^2, k, [1:2:15])

But there is an error message.

Also, on a side note, what's the purpose of syms and the "x" variable shown in the matlab documentation example where I got this code?

##### 0 Comments

### Accepted Answer

John BG
on 6 Jan 2017

Edited: John BG
on 6 Jan 2017

Philip

the 1st part of Walter's answer has syntax error:

returning error, from the attempted d.*t

.

Let me suggest the following:

L=100;

t=[0:2/L:2];

x=zeros(1,numel(t));

for n = 1:2:15

x=x+ sin(n*pi*t)/n;

end;

x=x+.5/pi

plot(t,x);grid on

.

Increase L to improve signal time resolution.

.

if you find these lines useful would you please mark my answer as Accepted Answer?

To any other reader, if you find this answer of any help please click on the thumbs-up vote link,

thanks in advance for time and attention

John BG

##### 3 Comments

### More Answers (1)

Walter Roberson
on 6 Jan 2017

Easiest is to use a definite sum:

n = 1:2:15;

x = 1/2 + sum( 2./(pi*n) .* sin(n.*pi.*t) );

But you could use

syms n t

x = 1/2 + symsum( 2./(pi*(2*n-1)) .* sin((2*n-1).*pi.*t), n, 1, 8 );

##### 2 Comments

Walter Roberson
on 7 Jan 2017

For vector t, if you are using R2016b or later,

n = (1:2:15).';

x = 1/2 + sum( 2./(pi*n) .* sin(n.*pi.*t) );

For previous versions,

n = (1:2:15).';

x = 1/2 + sum( bsxfun(@times, 2./(pi*n), sin( bsxfun(@times, n.*pi, t) ) ) );

### See Also

### Community Treasure Hunt

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

Start Hunting!