小白级DCT的公式和计算(有示例数据代入说明每个步骤)

离散余弦变换(DCT)是一种常用的信号处理技术,用于将信号从时域转换到频域。DCT在图像压缩(如JPEG)和音频编码中广泛应用。

DCT的公式如下:
[ X_k = \alpha(k) \sum_{n=0}^{N-1} x_n \cos\left[\frac{\pi}{N} \left(n + \frac{1}{2}\right) k\right] ]
其中:

  • (X_k) 是第 (k) 个DCT系数。
  • (x_n) 是输入信号的第 (n) 个样本。
  • (N) 是输入信号的长度。
  • (\alpha(k)) 是一个归一化因子,定义为:
    • (\alpha(k) = \sqrt{\frac{1}{N}}) 对于 (k = 1, 2, …, N-1)
    • (\alpha(k) = \sqrt{\frac{1}{2N}}) 对于 (k = 0)

示例数据代入说明每个步骤

假设我们有一个长度为4的信号 (x = [1, 2, 3, 4]),我们将计算其DCT。

步骤1: 定义输入信号和参数

[ x = [1, 2, 3, 4] ]
[ N = 4 ]

步骤2: 计算归一化因子 (\alpha(k))
  • (\alpha(0) = \sqrt{\frac{1}{2 \cdot 4}} = \sqrt{\frac{1}{8}} = \frac{1}{\sqrt{8}} = \frac{1}{2\sqrt{2}} \approx 0.3536)
  • (\alpha(1) = \alpha(2) = \alpha(3) = \sqrt{\frac{1}{4}} = \frac{1}{2} = 0.5)
步骤3: 计算DCT系数

我们需要计算 (X_0, X_1, X_2, X_3)。

计算 (X_0)

[ X_0 = \alpha(0) \sum_{n=0}^{3} x_n \cos\left[\frac{\pi}{4} \left(n + \frac{1}{2}\right) \cdot 0\right] ]
由于 (\cos\left[\frac{\pi}{4} \left(n + \frac{1}{2}\right) \cdot 0\right] = \cos(0) = 1),所以:
[ X_0 = \alpha(0) \sum_{n=0}^{3} x_n = \frac{1}{\sqrt{8}} (1 + 2 + 3 + 4) = \frac{1}{\sqrt{8}} \cdot 10 = \frac{10}{\sqrt{8}} = \frac{10}{2\sqrt{2}} = 2.5\sqrt{2} \approx 3.536]

计算 (X_1)

[ X_1 = \alpha(1) \sum_{n=0}^{3} x_n \cos\left[\frac{\pi}{4} \left(n + \frac{1}{2}\right) \cdot 1\right] ]
[ X_1 = 0.5 \sum_{n=0}^{3} x_n \cos\left[\frac{\pi}{4} (n + 0.5)\right] ]
计算每个项:
[ \cos\left(\frac{\pi}{4} (0 + 0.5)\right) = \cos\left(\frac{\pi}{4}\right) = \frac{\sqrt{2}}{2} ]
[ \cos\left(\frac{\pi}{4} (1 + 0.5)\right) = \cos\left(\frac{3\pi}{4}\right) = -\frac{\sqrt{2}}{2} ]
[ \cos\left(\frac{\pi}{4} (2 + 0.5)\right) = \cos\left(\frac{5\pi}{4}\right) = -\frac{\sqrt{2}}{2} ]
[ \cos\left(\frac{\pi}{4} (3 + 0.5)\right) = \cos\left(\frac{7\pi}{4}\right) = \frac{\sqrt{2}}{2} ]
因此:
[ X_1 = 0.5 (1 \cdot \frac{\sqrt{2}}{2} + 2 \cdot (-\frac{\sqrt{2}}{2}) + 3 \cdot (-\frac{\sqrt{2}}{2}) + 4 \cdot \frac{\sqrt{2}}{2}) ]
[ X_1 = 0.5 (\frac{\sqrt{2}}{2} - \frac{\sqrt{2}}{2} - \frac{3\sqrt{2}}{2} + \frac{4\sqrt{2}}{2}) = 0.5 (-1) = -0.5]

计算 (X_2)

[ X_2 = \alpha(2) \sum_{n=0}^{3} x_n \cos\left[\frac{\pi}{4} \left(n + \frac{1}{2}\right) \cdot 2\right] ]
[ X_2 = 0.5 \sum_{n=0}^{3} x_n \cos\left[\frac{\pi}{2} (n + 0.5)\right] ]
计算每个项:
[ \cos\left(\frac{\pi}{2} (0 + 0.5)\right) = \cos\left(\frac{\pi}{2}\right) = 0 ]
[ \cos\left(\frac{\pi}{2} (1 + 0.5)\right) = \cos\left(\frac{3\pi}{4}\right) = -\frac{\sqrt{2}}{2} ]
[ \cos\left(\frac{\pi}{2} (2 + 0.5)\right) = \cos\left(\frac{5\pi}{4}\right) = -\frac{\sqrt{2}}{2} ]
[ \cos\left(\frac{\pi}{2} (3 + 0.5)\right) = \cos\left(\frac{7\pi}{4}\right) = -\frac{\sqrt{2}}{2} ]
因此:
[ X_2 = 0.5 (0 - \frac{\sqrt{2}}{2} - \frac{\sqrt{2}}{2} - \frac{\sqrt{2}}{2}) = 0.5 (-1.5) = -0.75]

计算 (X_3)

[ X_3 = \alpha(3) \sum_{n=0}^{3} x_n \cos\left[\frac{\pi}{4} \left(n + \frac{1}{2}\right) \cdot 3\right] ]
[ X_3 = 0.5 \sum_{n=0}^{3} x_n \cos\left[\frac{3\pi}{4} (n + 0.5)\right] ]
计算每个项:
[ \cos\left(\frac{3\pi}{4} (0 + 0.5)\right) = \cos\left(\frac{3\pi}{4}\right) = -\frac{\sqrt{2}}{2} ]
[ \cos\left(\frac{3\pi}{4} (1 + 0.5)\right) = \cos\left(\frac{7\pi}{4}\right) = -\frac{\sqrt{2}}{2} ]
[ \cos\left(\frac{3\pi}{4} (2 + 0.5)\right) = \cos\left(\frac{11\pi}{4}\right) = \frac{\sqrt{2}}{2} ]
[ \cos\left(\frac{3\pi}{4} (3 + 0.5)\right) = \cos\left(\frac{15\pi}{4}\right) = \frac{\sqrt{2}}{2} ]
因此:
[ X_3 = 0.5 (-\frac{\sqrt{2}}{2} - \frac{\sqrt{2}}{2} + \frac{\sqrt{2}}{2} + \frac{\sqrt{2}}{2}) = 0.5 (0) = 0]

最终,DCT系数为:
[ X = [3.536, -0.5, -0.75, 0] ]

注意:DCT的公式还需要读者自己找资料验证一下,有的系数看的和其他版本公式不一样。

重点在于整个计算流程的梳理和明晰。

祝大家学业有成,工作顺利,前途光明~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值