【发布时间】:2022-01-05 16:48:33
【问题描述】:
我正在研究标量与矢量量化,我有一个任务是(在 MATLAB 中)使用 Lloyd-Max 算法实现一个标量量化器,并通过 k-means 聚类实现一个矢量量化器。
vector量化器工作在R2向量空间,所以它的输入是一个样本元组(输入向量),它的输出也是一个二维向量,对应量化区域的质心向量。
有人告诉我,为了使两个量化器之间的比较准确,我需要保持每个样本的位数,恒定。例如,在 n 位标量量化器中,有 2n 个量化区域,其中一个样本将被量化。
等效的 vector 量化器,每个输入元组将有 2n 位,因此每个样本仍由 n 位表示。 所以,按照这个逻辑,我认为 vector 量化器应该有 22n 个量化/Voronoi 区域。
我必须量化来自高斯源(源 A)和 AR(5) 随机过程(源 B)的相同数量的样本。根据我的研究,我认为 scalar 量化器有望对源 A(在 MSE 意义上)和 vector 执行更好的量化 量化器应该在 AR 过程中表现更好(来源 B),其中样本相互关联。
但是,当我量化上述两个源并计算原始信号和量化信号之间的 MSE 时,矢量量化器会为两个源提供更小的 MSE。因此,矢量量化器对两个源都更有效(在 MSE 意义上),我认为这是错误的,因为它应该只对自回归随机过程更有效,而不是对高斯源也更有效。
(我将 MSE 计算为:mse(input_signal - quantized_signal),所以没有错。)
所以我的问题是:
- (理论上)矢量量化器应该更有效地量化两个源还是仅在 AR 处理的情况下?
- 矢量量化器等效于 n 位标量量化器,应具有 2n 或 22n sup> 量化/Voronoi 区域(第二个参数/kmeans() 的簇数)。
如果需要,我也会发布 MATLAB 代码。
任何帮助都将不胜感激,因为我已经坚持了几天。
提前致谢。
【问题讨论】:
-
您是否使用相同的输入信号来学习量化区域和测试量化器?
标签: matlab signal-processing quantization