巨大的傅立叶矩阵 - MATLAB

时间:2015-12-30 16:52:21

标签: matlab fft sparse-matrix

我需要创建一个傅里叶矩阵,以便将它应用于我需要使用spalloc定义为稀疏的巨大矩阵。我试过了:

F=dftmtx(N);

但是N太大,所以我无法创建它。 有什么方法可以解决这个问题吗? 谢谢你的帮助!

1 个答案:

答案 0 :(得分:0)

对于每一列,您可以通过省略将乘以零的条目来形成简化的DFT矩阵。像

这样的东西
X = my_matrix;
c = column_index;

x = X(:,c);
N = length(x);
inds = find(x);
F = exp( -1j * 2*pi/N * (0:N-1)' * (inds-1) );
Xdft(:,c) = F * x(inds);

除非输入矩阵中的零不会改变列到列,否则您必须迭代列。但是,上面对我来说仍然是愚蠢的。我一次只拉出一列并使用fft()