2014-11-16 3 views
0

У меня проблема.Matlab собственный fft2 без петель

У меня есть задача написать собственный fft2 без использования for-loops в Matlab. Существует формула для вычисления этой задачи:

F (u, v) = сумма (от 0 до M-1) {сумма (от 0 до N-1) {f (m, n) * e^(- я * 2pi * (гм/М + Н/N))}}

Или для лучшего чтения: http://www.directupload.net/file/d/3808/qs3r9ogz_png.htm

это легко сделать это с двумя для петель, но я понятия не имею, как это сделать это без этих циклов, абсолютно не знаю. Мы не получаем никакой помощи от личного обучения. Они даже не дают намека или ссылки на книгу, где мы могли бы прочитать об этом.

Теперь я хочу попытаться получить помощь здесь.

ответ

0

Вы знакомы с матричной формой DFT? смотрите здесь: http://en.wikipedia.org/wiki/DFT_matrix

Вы можете сделать что-то подобное, чтобы получить матричную форму для 2D DFT.
Вам нужно преобразовать матрицы. Первая - это матрица DFT N-на-N, которая работает с столбцами f, как описано в ссылке выше. Затем вам понадобится другая матрица M-byM DFT, она работает с строками f. Наконец, вы преобразовали сигнал в

F = Wm * f * Wn; 

без каких-либо петель. Заметим, что матрица ДПФ может быть построена и без петли, используя что-то вроде

(1:M)*((1:M)') 
+0

Ваш ответ, кажется, очень хорошо, но есть недостаток знаний на моей стороне. Я не знаю, как создать эти DFT-матрицы. У меня есть эта формула. Разве мне это не понадобится, и если, как мне его использовать. Эту проблему трудно схватить за меня. – user3556115

+0

@ user3556115 Следуйте по ссылке, которую я предоставил. Там определена матрица DFT. – ThP

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