【发布时间】:2018-05-03 18:43:04
【问题描述】:
我有 java 代码,它为我提供了真实输入的 FFT 输出。我需要执行 MCLT。目前我有以下格式的 FFT 输出。我见过一些用 Matlab 编码的快速 MCLT 算法 (https://www.microsoft.com/en-us/research/wp-content/uploads/2016/02/tr-2005-02.pdf),但不能完全理解。谁能帮我写对应的java代码。
Java 代码起点:
int dtLength = data.length/2;
double[] realPart = new double[dtLength];
double[] imagPart = new double[dtLength];
Matlab 代码:
function X = fmclt(x)
% FMCLT - Compute MCLT of a vector via double-length FFT
%
% H. Malvar, September 2001 -- (c) 1998-2001 Microsoft Corp.
%
% Syntax: X = fmclt(x)
%
% Input: x : real-valued input vector of length 2*M
%
% Output: X : complex-valued MCLT coefficients, M subbands
% in Matlab, by default j = sqrt(-1)
% determine # of subbands, M
L = length(x);
M = L/2;
% normalized FFT of input
U = sqrt(1/(2*M)) * fft(x);
% compute modulation function
k = [0:M]';
c = W(8,2*k+1) .* W(4*M,k);
% modulate U into V
V = c .* U(1:M+1);
% compute MCLT coefficients
X = j * V(1:M) + V(2:M+1);
return;
% Local function: complex exponential
function w = W(M,r)
w = exp(-j*2*pi*r/M);
return;
【问题讨论】:
-
Google 告诉我 MCLT 可能是内侧副韧带横断或少数载体终生,但我认为这两者都不是你在说的。请添加一些背景,以便我们知道我们在这里看到的是什么。
-
@CrisLuengo 问题中有一个链接到算法的原始论文。 MCLT 代表 Modulated Complex Lapped Transform
-
问题应该独立存在。链接死了,这些问题预计会持续很长时间。 Stack Overflow 的使命是建立大量的问答集,我们不能让那些依赖于可能中断的链接。请阅读How to Ask 和帮助中心的其他文档。