我很喜欢用matlab中的fft来编写代码。
fft(信号,[],n)
其中,n根据Matlab文档告诉应用快速傅立叶变换的维度:http://www.mathworks.it/it/help/matlab/ref/fft.html。
我也想对dct做同样的处理。
这个是可能的吗?我找不到任何有用的信息。
谢谢你的帮助。
罗吉
发布于 2014-01-21 14:55:03
dct不能选择像fft这样的维度。您将不得不转换您的输入来操作行,或者从您的信号中选择一个向量并对其进行操作。
发布于 2014-03-12 20:28:16
是啊!
试一试:
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 https://stackoverflow.com/questions/21260939
复制相似问题