Все скрипты были запущены из-под Python 3.5.2 через Jupyter
Функция была смоделирована следующей командой: %run -i 'compile-func.py' -g 10,2,5+10,2,7+30.0,2,12+30.0,2,16+30.0,2,22+30,2,24
Рис.1 Смоделированная функция c максимумами в точках 5, 7, 12, 16, 22, 24 и высотой пиков 10, 10, 30, 30, 30, 30
Функция разложена в ряд Фурье следующей командой: %run -i 'func2fourier.py' -i func.txt -o garm.txt
Был получен файл с гармониками
Восстановление функции по всем возможным гармоникам: %run -i 'fourier2func.py' -f func.txt -i garm.txt
Рис.2 Функция, восстановленная по всем гармоникам
Функция восстановлена отлично. Попробуем восстановить функция по 1, 10, 20, 30 и 40 гармоникам
%run -i 'fourier-filter.py' -r 0-X -i garm.txt -o garm_X.txt (где X - число гармоник)
%run -i 'fourier2func.py' -f func.txt -i garm_X.txt -o garm_fileX.txt
Рис.3 Функия восстановлена по 1 гармонике (пунктиром)
Рис.4 Функия восстановлена по 10 гармоникам (пунктиром)
Рис.5 Функия восстановлена по 20 гармоникам (пунктиром)
Рис.6 Функия восстановлена по 30 гармоникам (пунктиром)
Рис.7 Функия восстановлена по 40 гармоникам (пунктиром)
Уже по 30 гармоникам функция восстанавливается хорошо, а по 40 -иделаьно
Далее посмотри, как влияют на общую каритну шумы в 10% по амплитуде, фазе и им обоим
%run -i 'func2fourier.py' -F X -P X -i func.txt -o *file1*.txt (где X - уровень шумов по амплитуде, Y - уровень шумов по фазе)
%run -i 'fourier-filter.py' -r 0-40 -i *file1*.txt -o *file2*.txt
%run -i 'fourier2func.py' -f func.txt -i *file2*.txt -o *file3*.txt
Рис.8 Функция с 10% зашумлением по амплитуде
Рис.9 Функция с 10% зашумлением по фазе
Рис.10 Функция с 10% зашумлением по амплитуде и фазе
Зашумление по амплитуде меньше влияет на функцию, чем зашумление по фазе и им обоим.
Далее посмотрим, как функция восстанавливается без 5 гармоник в начале, середине и конце.
%run -i 'fourier-filter.py' -r 5-40 -i garm.txt -o garm5_40.txt
%run -i 'fourier2func.py' -f func.txt -i garm5_40.txt -o 5_40.txt
Рис.11 Восстановленная функция без 5 первых гармоник
%run -i 'fourier-filter.py' -r 0-18,24-40 -i garm.txt -o garm0_18_24_40.txt
%run -i 'fourier2func.py' -f func.txt -i garm0_18_24_40.txt -o 0_18_24_40.txt
Рис.12 Восстановленная функция без 5 средних гармоник
%run -i 'fourier-filter.py' -r 0-35 -i garm.txt -o garm0_35.txt
%run -i 'fourier2func.py' -f func.txt -i garm0_35.txt -o 0_35.txt
Рис.13 Восстановленная функция без 5 последних гармоник
Исходя из рисунков, можно понять, что без части данных в начале и середине функция восстанавливается с трудом.