title: Is there a cleaner way to generate a sum of sinusoids?
body: <p>I have written a simple matlab / octave function to create the sum of sinusoids with independent amplitude, frequency and phase for each component.  Is there a cleaner way to write this?</p>
  
  <pre><code>## Create a sum of cosines with independent amplitude, frequency and
  ## phase for each component:
  ##   samples(t) = SUM(A[i] * sin(2 * pi * F[i] * t + Phi[i])
  ## Return samples as a column vector.
  ##
  function signal = sum_of_cosines(A = [1.0], 
                                   F = [440], 
                                   Phi = [0.0], 
                                   duration = 1.0, 
                                   sampling_rate = 44100)
    t = (0:1/sampling_rate:(duration-1/sampling_rate));
    n = length(t);
    signal = sum(repmat(A, n, 1) .* cos(2*pi*t' * F + repmat(Phi, n, 1)), 2);
  endfunction
  </code></pre>
  
  <p>In particular, the calls to repmat() seem a bit clunky -- is there some nifty vectorization technique waiting for me to learn?</p>