You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何基于DCT系数计算信号能量及前n个大系数的能量占比

结论

你给出的计算逻辑完全正确,核心依据是正交变换的能量守恒特性。

理论依据
  • DCT是正交变换,满足帕塞瓦尔恒等式:信号在时域/空域的总能量,和变换到DCT域后的总能量完全相等(仅可能差一个固定的归一化常数,不同DCT实现的常数取值有差异,但不影响比例计算)。
  • 信号的能量可以直接用向量L2范数的平方表征:L2范数norm(v)的计算规则为$\sqrt{\sum_{i} v_i2}$,因此前n个最大DCT系数的能量和为$\text{norm}(X_{topn})2$,全部DCT系数的总能量为$\text{norm}(X)^2$,二者求比值时开平方运算会抵消,最终结果和直接用范数求比值完全一致。
2D图像场景适配方法

如果是计算2D图像的DCT系数能量占比,仅需要先对图像做2D DCT变换,再将得到的2D系数矩阵拉平为一维向量,后续逻辑和一维场景完全相同。

参考代码说明

你贴出的Matlab代码逻辑如下:

X = dct(x); % 对输入一维信号x做DCT变换,得到系数向量X
[XX,ind] = sort(abs(X),'descend'); % 按DCT系数的绝对值从大到小排序,得到排序后索引
i = 1;
while norm(X(ind(1:i)))/norm(X) < 0.99 % 累加系数直到选中的系数能量占总能量的99%
  i = i + 1;
end

内容的提问来源于stack exchange,提问作者jossdb

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 16:54:06