2015-05-12 3 views
0

Я пытаюсь создать матрицу дискретного преобразования Фурье в R, и я не знаю, правильно ли это.DFT-матрица в R

Я создам матрицу, которая выглядит так: 1/sqrt (N) * [w^(m * n)] для n, m в [0: N-1] для w = exp (-2 * pi * я/N), как и в (Wikipedia->DFT-Matrix)

так что я пробовал:

DFT.matrix <- function (N) { 

    w <- exp(-2*pi*1i/N) 

    row <- vector() 
    for (n in seq(0,N-1,1)) 
     for (m in seq(0,N-1,1)) 
     row <- c(row, w^(m*n)) 

    dft_matrix = (1/sqrt(N))*matrix(row, N, byrow=TRUE) 
    return (dft_matrix) 
} 

Я не построили в Сложное, потому что я не в настоящее время нет, как реализовать. Можете ли вы помочь мне реализовать эту функцию?

+0

я изменил: ш <- ехр (-2 * пи/N) To: ш <- ехр (-2 * пи * 1i/N) – tbol

ответ

0

Попробуйте

N <- 3 
w <- exp(-2*pi*1i/N) 
outer(0:(N-1), 0:(N-1), function(i, j) w^(i*j))/sqrt(N) 
#    [,1]   [,2]   [,3] 
#[1,] 0.5773503+0i 0.5773503+0.0i 0.5773503+0.0i 
#[2,] 0.5773503+0i -0.2886751-0.5i -0.2886751+0.5i 
#[3,] 0.5773503+0i -0.2886751+0.5i -0.2886751-0.5i 
+0

Спасибо за вашу помощь. Ваша функция больше R-Style, чем моя, но делает то же самое. Я иду из C/C++. Пожалуйста, будьте терпеливы. – tbol

Смежные вопросы