0

我熟悉在 matlab 中使用 fft 和代码

fft(信号,[],n)

其中 n 告诉从 Matlab 文档中应用 fft 的维度:http: //www.mathworks.it/it/help/matlab/ref/fft.html

我想对 dct 做同样的事情。

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

谢谢您的帮助。

路易吉

4

2 回答 2

0

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

于 2014-01-21T14:55:03.353 回答
0

是的!

试试看:

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     
于 2014-03-12T20:28:16.303 回答