各コンポーネントの独立した振幅、周波数、位相を持つ正弦波の合計を作成する単純な matlab/オクターブ関数を作成しました。これを書くためのよりクリーンな方法はありますか?
## 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
特に、repmat() の呼び出しは少しぎこちないようです。気の利いたベクトル化手法を学ぶ必要がありますか?