无法使用 SVD 构造原始矩阵

信息处理 matlab stft 频谱图 svd
2022-01-31 05:55:08

我需要

  • 读取.wav文件
  • 使用 STFT 从中制作 2D 矩阵
  • 生成其奇异值分解
  • 做一些水印

但我无法通过矩阵乘法再次构建原始矩阵:

 x = audioread('0.wav');
 stft = spectrogram(x); 
 [U,S,V] = svd(stft);
 stftb=U*S*V.';

问题是 STFT 和 STFTb 不一样。

1个回答

没有足够的声誉来发表评论,但您需要在公式中使用共轭转置以使结果正确。所以试试stftb=U*S*V';最后一行代码。请注意,.由于您使用的矩阵很复杂,因此我删除了这会有所不同。