我熟悉在 matlab 中使用 fft 和代码
fft(信号,[],n)
其中 n 告诉从 Matlab 文档中应用 fft 的维度:http: //www.mathworks.it/it/help/matlab/ref/fft.html
我想对 dct 做同样的事情。
这可能吗?我找不到任何有用的信息。
谢谢您的帮助。
路易吉
我熟悉在 matlab 中使用 fft 和代码
fft(信号,[],n)
其中 n 告诉从 Matlab 文档中应用 fft 的维度:http: //www.mathworks.it/it/help/matlab/ref/fft.html
我想对 dct 做同样的事情。
这可能吗?我找不到任何有用的信息。
谢谢您的帮助。
路易吉
dct 没有选择像 fft 这样的维度的选项。您将不得不转置输入以对行进行操作,或者从信号中选择一个向量并对其进行操作。
是的!
试试看:
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