我在使用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