реклама на сайте
подробности

 
 
> Matlab, fft2, баг?, Несовпадение результатов двумерного фурье.
fillsv
сообщение Feb 2 2016, 20:46
Сообщение #1





Группа: Участник
Сообщений: 11
Регистрация: 21-04-10
Пользователь №: 56 788



Столкнулся с необходимостью делать двумерное фурье набора картинок. Это можно делать двумя путями:
1) через цикл прогнать все картинки по одной.
2) загнать из в трехмерную матрицу и обработать одной командой.
Забавность заключается в том, что при выполнении двумерного фурье двуми, казалось бы, идентичными способами, получаются слегка разные результаты. Ниже пример этого в коде:
Создаем исходный массив:
Код
A = rand(100,100,10);

Обработка через цикл:
Код
for ii = 1:10
    f1(:,:,ii) = fft2(A(:,:, ii));
end

Обработка единой матрицы:
Код
f2 = fft2(A);

Сравнение результатов:
Код
std(f1(:)-f2(:))

ans =

   1.6847e-14

С практической точки зрения, отличие двух результатов, конечно же, ничтожное. Однако таки интересно, почему оно есть? В хелпе по этому поводу написано следующее:
Цитата("Matlab 2015a Help")
If the dimensionality of X is greater than 2, the fft2 function returns the 2-D DFT for each higher dimensional slice of X. For example, if size(X) = [100 100 3], then fft2 computes the DFT of X(:,:,1), X(:,:,2) and X(:,:,3).

Таки это баг или все в пределах нормы?
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 20th July 2025 - 17:52
Рейтинг@Mail.ru


Страница сгенерированна за 0.01357 секунд с 7
ELECTRONIX ©2004-2016