2016-04-23 10 views
1

2つの入力信号f1f2があるとします。これらの信号を加算して、第3の信号f3 = f1 + f2を生成することができました。私はf3のスペクトログラムをlog(|stft(f3)|^2)として計算します。2つのオーディオファイルのスペクトログラム(まとめて)

残念ながら私は元の信号f1f2を持っていません。私は、しかし、彼らのスペクトログラムA = log(|stft(f1)|^2)B = log(|stft(f2)|^2)があります。私が探しているのは、ABを使用して、できるだけ近くでlog(|stft(f3)|^2)を近似する方法です。我々はいくつかの数学をすれば、我々は得ることができます:

log(|stft(f1 + f2)|^2) = log(|stft(f1) + stft(f2)|^2)

... = log(|x1 + i * y1 + x2 + i * y2|^2)

... = log((x1 + x2)^2 + (y1 + y2)^2)

... = log(x1^2 + x2^2 + y1^2 + y2^2 + 2 * (x1 * x2 + y1 * y2))

を書くことstft(f1) = x1 + i * y1 & stft(f2) = x2 + i * y2を表現します

ので、この時点で私は近似値を使用することができます。

log(|stft(f3)|^2) ~ log(exp(A) + exp(B))

が、私は最後の部分2 * (x1 * x2 + y1 * y2)を無視します。だから私の質問です:これは良い近似がありますか?

アイデア?ありがとう。

+1

正の大きさの演算は線形ではないため、結果として分かれない(間違いなく)交差項が得られます。 – SleuthEye

+0

だから周りに道はない?あなたは賢明な近似を知っていますか?または、私が実際のオーディオファイルを扱っているために使用できるものはありますか? – user667804

+0

2つの入力が相関していない場合、交差項は消滅します。 – SleuthEye

答えて

0

あなたの表記を100%理解しているわけではありませんが、私はそれを打ち明けます。時間領域における加算は、周波数領域における加算に対応する。 2つの時間領域信号x1およびx2を加算することにより、第3の時間領域信号x3が生成される。 x1、x2、x3は全て周波数領域スペクトルF(x1)、F(x2)、F(x3)を有する。 F(x1)の実数部にF(x1)の実数部を加算し、F(x2)の実数部にF(x1)の虚数部を加算することによって加算が行われるF(x1)+ F )をF(x2)の虚部に割り当てる。したがって、x1 [0]が1 + 0jであり、x2 [0]が0.5 + 0.5jであれば、合計は1.5 + 0.5jである。あなたの表記法から判断すると、大きさを追加しようとしています。この例では、1 + 0j | + | 0.5 + 0.5j | = sqrt(1 * 1)+ sqrt(0.5 * 0.5 + 0.5 * 0.5)= sqrt(2)+ sqrt(0.5)。明らかに同じことではありません。

log((|stft(a) + stft(b)|)^2) = log(|stft(a)|^2) + log(|stft(b)|^2) 
+0

私はどこに問題があるのか​​を明確にするために私の質問を書きました。私はあなたが私の質問を正しく理解したと思うが、最後の行は間違っているようだ。絶対演算子は線形ではありません。 – user667804

0

は2つのログの大きさのEXP()を取り、それらを追加し、合計のログを取る:私はあなたがこのような何かをしたいと思います。

+0

私は今それをやっていますが、正しくありません。私はクロス項2 *(x1 * x2 + y1 * y2)が足りません。私は近似が十分に良いかもしれないと思うが、あなたが少し真実に近いものを持っているなら、私は知りたいと思う。 – user667804

関連する問題