DCT行而不是列



我在使用MATLAB中的FFT与代码

中被熟悉

fft(信号,[],n)

n n tell Matlab文档中使用FFT的维度:http://www.mathworks.it/it/help/matlab/ref/ref/fft.html

我想对DCT进行同样的操作。

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

感谢您的帮助。

luigi

dct没有选择像FFT这样的维度的选项。您必须要么转置输入才能在行上操作,要么从信号中选择一个向量并在此操作。

yep!

尝试:

matrix = dctmtx(n);
signal_dct = matrix * signal;

编辑

离散的余弦变换。

y = dct(x)返回x。

的离散余弦变换

矢量y的大小与x相同,并包含离散的余弦变换系数。

y = dct(x,n)垫子或在转换之前将向量x截断为长度n。

如果x是矩阵,则将DCT操作应用于每列。可以使用IDCT倒置此转换。

% 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     

相关内容

  • 没有找到相关文章

最新更新