前提・実現したいこと
gnu octaveで一周期の波形(16bit/44.1khz/wav)をフーリエ解析し、解析した値をもとに加算合成し、waveファイルとして書き出したのですが、元の波形と微妙に違う結果となってしまいます。何か間違っていますか?
発生している問題・エラーメッセージ
該当のソースコード
GNU OCTAVE ver.4.4
ソースコード
clear all;
FS = 44100;
y =audioread('00.wav');
sml = length(y); #sample length
z =fft(y);
sinefft = -1 *(imag(z)/(sml/2)); #sine波
cosinefft = real(z)/(sml/2); #cosine波
data_s = sinefft(2:129); #サイン波の第1倍音から第128倍音まで
data_c = cosinefft(2:129); #コサイン波の第1倍音から第128倍音まで
partial = sml / 2;
for k = 1: partial
AS(:,k) = sin(linspace(0, 2kpi, sml)) .* data_s(k);
AC(:,k) = cos(linspace(0, 2kpi, sml)) .* data_c(k);
end
Additive = sum(AS,2) + sum(AC,2) + (cosinefft(1)/2); #サイン波の合計とコサイン波の合計とDCOffset
audiowrite('resynth.wav', Additive, FS);
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答2件
あなたの回答
tips
プレビュー