我正在从事一个研究项目,我们希望将卷积神经网络应用于信号的图像表示。但是,似乎如果我使用频谱图,我最终会丢失相位信息。结果,我的问题是:
是否存在信号到频谱图的等效变换,其中相位信息是结果图像的一部分?
非常感谢,祝你有美好的一天,马克西姆
来自https://en.wikipedia.org/wiki/Spectrogram:
限制和再合成
从上面的公式可以看出,频谱图似乎不包含有关它所代表的信号的确切甚至近似相位的信息。出于这个原因,不可能逆转该过程并从频谱图中生成原始信号的副本。
我正在从事一个研究项目,我们希望将卷积神经网络应用于信号的图像表示。但是,似乎如果我使用频谱图,我最终会丢失相位信息。结果,我的问题是:
是否存在信号到频谱图的等效变换,其中相位信息是结果图像的一部分?
非常感谢,祝你有美好的一天,马克西姆
来自https://en.wikipedia.org/wiki/Spectrogram:
限制和再合成
从上面的公式可以看出,频谱图似乎不包含有关它所代表的信号的确切甚至近似相位的信息。出于这个原因,不可能逆转该过程并从频谱图中生成原始信号的副本。
我想到了一个自制的解决方案,但我不知道它是否适合你。无论如何,我会写下来,因为它可能会有所帮助。
在 MATLAB 中,您可以执行以下操作:
[s,f,t] = spectrogram(x,window,noverlap,f,fs);
因此s将存储复数值。然后你可以找到它们的大小和角度
A = abs(s);
phi = angle(s);
然后你可以用imagesc. 对于幅度:
imagesc(time_vector,freq_vector,20*log10(A));
其中前两个输入是您可以定义以设置轴的向量。同样,对于阶段:
imagesc(time_vector,phase_vector,phi);
如果您创建体积(未展平的 3D)图像,您可以使用 3 维中的 2 层来表示幅度和相位,或复杂频谱图输出的实部和虚部。
在 2D 颜色光谱图中,您可以尝试使用正交颜色映射,例如,在 RGB 空间中,红色 + 绿色表示幅度,蓝色(或 delta blue)表示相位,或类似的实部和虚部,或使用 YUV 或 HSL颜色空间等