首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DCT行而不是列

DCT行而不是列
EN

Stack Overflow用户
提问于 2014-01-21 14:29:41
回答 2查看 264关注 0票数 0

我很喜欢用matlab中的fft来编写代码。

fft(信号,[],n)

其中,n根据Matlab文档告诉应用快速傅立叶变换的维度:http://www.mathworks.it/it/help/matlab/ref/fft.html

我也想对dct做同样的处理。

这个是可能的吗?我找不到任何有用的信息。

谢谢你的帮助。

罗吉

EN

回答 2

Stack Overflow用户

发布于 2014-01-21 14:55:03

dct不能选择像fft这样的维度。您将不得不转换您的输入来操作行,或者从您的信号中选择一个向量并对其进行操作。

票数 0
EN

Stack Overflow用户

发布于 2014-03-12 20:28:16

是啊!

试一试:

代码语言:javascript
复制
matrix = dctmtx(n);
signal_dct = matrix * signal;

编辑

离散余弦变换

Y= dct( X )返回X的离散余弦变换。

向量Y与X大小相同,包含离散余弦变换系数。

Y = dct(X,N)在转换前将向量X截断为长度N。

如果X是一个矩阵,则将dct操作应用于每一列。这种变换可以利用IDCT进行倒置。

代码语言:javascript
复制
% Example:
%   Find how many dct coefficients represent 99% of the energy 
%   in a sequence.

x = (1:100) + 50*cos((1:100)*2*pi/40);  % Input Signal 
X = dct(x);                             % Discrete cosine transform
[XX,ind] = sort(abs(X)); ind = fliplr(ind);
num_coeff = 1;
while (norm([X(ind(1:num_coeff)) zeros(1,100-num_coeff)])/norm(X)<.99)
    num_coeff = num_coeff + 1;
end;
num_coeff     
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21260939

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档