guryev писал(а):Source of the post Ох, лень объяснять... Короче, в процедуре coeff_func() меняйте оператор
на
Код: Выбрать все
for ( step = 64; step > 0; step >>= 1 )
и всё должно заработать.
И ещё одно - когда вычисляете образец сигнала (процедура calc_sin()), начинайте с аргумента 0, а не 1/s_rate, а то сигнал получается сдвинутый, ну и спектр тоже с болтанкой.
Да, Вы правы. Огромное Вам спасибо. От всей души, я пару месяцев мучался с данной ошибкой. Перечитал Кестлера, Солонину, Юкио Сато, статей и форумов.
Если честно так и не понял почему именно так реализуется бпф а не какизначально я написал.
Если переписать на
for ( step = 64; step > 0; step >>= 1 )
то будет ли соблюдаться формула P = N*log2 (N)
как я понял, то нет, так как у меня получится 64 шага, в каждом шаге по 64 вложенных цикла (блок на цикл).
Если кому то не сложно, поясните, почему я так напутал с вложенными циклами и какова всё таки сложность программы (я про N*log2(N))
Спасибо в любом случае за помощь
ААА оператор Си >>= сдвигает же
И мы имеем 64, 32,16,8,4,2,1
То есть всё таки шагов 7 но они - есть показатели степени 2.
Всё, я понял. Я всё понял. Огромное Вам спасибо. Всё таки в учебниках где в качестве входного массива беруться 8 выборок и получают три шага c номерами ПМ [0], [0,2], [0,1,2,3] не проясняют момент о том что шаг обязательно есть показатель степени 2 с исходным значением N/2
СПАСИБО!