MATLAB Answers

# How to create a function as sum of some sine functions?

27 views (last 30 days)
Klaudjo Aliaj on 6 Jan 2021
Commented: Star Strider on 8 Jan 2021
I am trying to create a function which looks like: ,
but I am not finding the way how do it it. Can someone help me?
##### 1 CommentShowHide None
SHIVAM KUMAR on 6 Jan 2021
Is your theta in radians or degrees ?

Sign in to comment.

### Accepted Answer

Star Strider on 6 Jan 2021
A loop is not necessary.
If you have R2016b or later, try this (using your own variable vectors):
t = linspace(0, 2, 750); % Time Vector
a = 1:10; % Amplitude Vector
f = linspace(1000, 2000, numel(a)); % Frequency Vector
th = linspace(-pi, pi, numel(a)); % Phase Vector
y = sum(a(:).*sin(2*pi*f(:)*t + th(:))); % Compute Function, Then Take Sum Of Rows
figure
plot(t, y)
grid
This uses automatic implicit expansion, introduced in R2016b. If you have an earlier version:
y = sum(bsxfun(@times, a(:), sin(2*pi*f(:)*t + th(:)))); % Compute Function, Then Take Sum Of Rows
produces the same result.
.
##### 2 CommentsShowHide 1 older comment
Star Strider on 8 Jan 2021
As always, my pleasure!

Sign in to comment.

### More Answers (1)

SHIVAM KUMAR on 6 Jan 2021
Edited: SHIVAM KUMAR on 6 Jan 2021
This can be done like
y=0; %necessary to add the other things
for i=1:length(a)
y=y+a(i).*sind(2*pi*f(i).*t+theta(i));
end
If this works accept this answer but
if this does not work tell the error/other requirements in comment
##### 1 CommentShowHide None
Klaudjo Aliaj on 8 Jan 2021
Thank you :)

Sign in to comment.

### Community Treasure Hunt

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

Start Hunting!