在频域 Matlab 中压缩时域信号

信息处理 频谱 频率 频域 时频
2022-02-08 06:17:54

我是频域分析的新手。假设我有来自时域信号的频域表示。我想要做的是从这个频域表示中取出具有低幅度的频率,然后将这个频域表示转换回时域,使得结果几乎是原始时域表示。

在 Matlab 中,我想做的是这样的:

timeDomain(1:50) -> 应用 fft(timeDomain) -> 检查频域并滤除低幅度频率,从而产生一个频域矢量 x,其长度 (x) 可能 (way) 小于 50。(因此 x 应该只包含信号幅度最高的频率)-> 对这个滤波后的复向量应用 ifft -> 获得长度也为 50 的原始时域信号 (timeDomain(1:50) 的近似值。

因此,我的目标是在频域中以较少的维度表示时域信号 timeDomain(1:50),而不会丢失太多关于信号的信息,从而能够重建时域信号,因此基本上是压缩。

谢谢你的时间。

2个回答

一切都取决于你所说的压缩。您提出的是傅立叶或频谱阈值。希望您将生成一个长度的向量,其中包含一些零。让我们暂时忽略需要两个浮点数的“复杂性”,您可以使用 Hermitian 对称性来处理它。50

您的主要问题是实际压缩。首先忘记量化。主要问题是索引位置。假设我有一个转换后的域向量上使用阈值现在我给你压缩版本 ,比例为T=[5,1,3,4,0.5]2Tc=[5,3,4]3/5

你能检索吗?可能不是,你不知道零在哪里。这个问题以某种方式阻止了将匹配追踪用于图像压缩,因为对索引进行编码会过多地惩罚最终的压缩文件。Td=[5,0,3,4,0]

您可以查看压缩采样。利用信号的频域表示在本质上是稀疏的这一事实,您可以通过应用随机矩阵和 DFT 矩阵的组合来压缩时域信号。

假设您的时域信号是您可以执行以下操作:xN×1

yM×1=ΦM×N FN×N xN×1

其中,,其中是稀疏度。是一个 DFT 矩阵,是一个随机矩阵(高斯、伯努利等)。M=O(klog(N/k))kFΦ

您可以执行以下操作来重建您的信号 几乎没有损失:x^

minx^1  subject toΨx^y2ϵ

其中,Ψ=ΦF

有很多现有的方法可以为您进行此优化。您可以访问巨大的压缩采样资源