How to create a function as sum of some sine functions?
    16 views (last 30 days)
  
       Show older comments
    
    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?
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 Comments
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
See Also
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!

