假设我有两个输入信号f1和f2。我可以将这些信号相加,产生第三个信号f3 = f1 + f2。然后,我将计算f3的频谱图作为log(|stft(f3)|^2)。
不幸的是,我没有原始信号f1和f2。但是,我有它们的频谱图A = log(|stft(f1)|^2)和B = log(|stft(f2)|^2)。我要寻找的是一种使用A和B尽可能接近地逼近log(|stft(f3)|^2)的方法。如果我们进行一些数学推导,我们可以得出: log(|stft(f1 + f2)|^2) = log(|stft(f1) + stft(f2)|^2)
表示stft(f1) = x1 + i * y1和stft(f2) = x2 + i * y2,以此来编写
... = 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))
... = log(|stft(f1)|^2 + |stft(f2)|^2 + 2 * (x1 * x2 + y1 * y2))
因此,此时我可以使用以下近似值: log(|stft(f3)|^2) ≈ log(exp(A) + exp(B))
但是我会忽略最后一部分2 * (x1 * x2 + y1 * y2)。所以我的问题是:有没有更好的逼近方法?
有什么想法吗?谢谢。
不幸的是,我没有原始信号f1和f2。但是,我有它们的频谱图A = log(|stft(f1)|^2)和B = log(|stft(f2)|^2)。我要寻找的是一种使用A和B尽可能接近地逼近log(|stft(f3)|^2)的方法。如果我们进行一些数学推导,我们可以得出: log(|stft(f1 + f2)|^2) = log(|stft(f1) + stft(f2)|^2)
表示stft(f1) = x1 + i * y1和stft(f2) = x2 + i * y2,以此来编写
... = 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))
... = log(|stft(f1)|^2 + |stft(f2)|^2 + 2 * (x1 * x2 + y1 * y2))
因此,此时我可以使用以下近似值: log(|stft(f3)|^2) ≈ log(exp(A) + exp(B))
但是我会忽略最后一部分2 * (x1 * x2 + y1 * y2)。所以我的问题是:有没有更好的逼近方法?
有什么想法吗?谢谢。