Програмна реалізація алгоритмів швидкого перетворення Фур’є

Створення алгоритму обчислення швидкого перетворення Фур’є (ШПФ). Прорахунок обчислювальних затрат алгоритму та порівняння їх із затратами при безпосередньому виконанні дискретного перетворення Фур’є. Створення програмного засобу обчислення ШПФ.

Рубрика Программирование, компьютеры и кибернетика
Вид контрольная работа
Язык украинский
Дата добавления 16.06.2014
Размер файла 477,8 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

Міністерство освіти і науки України

Національний університет „Львівська політехніка”

Кафедра ЕОМ

Розрахункова робота

з дисципліни: «Проектування комп'ютерних засобів обробки сигналів і зображень»

на тему: «Програмна реалізація алгоритмів швидкого перетворення Фур'є»

Варіант №15

Виконав:

ст. гр. КСМм-13

Назаров Б.С.

Перевірив:

Лашко О.Л.

Львів 2013

Завдання

Розробити алгоритм обчислення заданого варіантом виду ШПФ, тобто побудувати його структуру та граф. Навести граф базової операції та основну процедуру обчислення. Привести формули обрахунку елементів БО для дійсної та уявної частини. Вибрати схему попередньої перестановки даних та обчислення повертаючих множників.

Прорахувати обчислювальні затрати створеного алгоритму та порівняти їх із затратами при безпосередньому виконанні ДПФ.

Створити завершений програмний засіб обчислення заданого варіантом виду ШПФ. Він повинен забезпечувати:

1. Повноцінний графічний інтерфейс для вводу вхідних параметрів та виводу вихідних значень, а саме:

· табличне представлення вхідної комплексної послідовності у заданому форматі (згідно заданої розрядності). Тут слід передбачити можливість окремої генерації випадковим чином дійсної та уявної частини а також діапазону випадкових чисел;

· табличне представлення повертаючих множників для кожного етапу (ярусу) перетворення;

· табличне та графічне відображення вихідної послідовності (окремо дійсна та уявна частини);

· відображення кількості здійснення математичних операцій та операцій пересилання даних;

· відображення загального часу роботи програми та обчислювального блоку зокрема.

2. Обчислювальна частина повинна реалізовувати:

· ефективну процедуру біт-інверсної перестановки елементів;

· обрахунок повертаючих множників з мінімізацією обчислень;

· основне функціональне перетворення;

· впорядкування результатів у природному порядку слідування.

Вступ

При обробці сигналів у багатьох випадках доводиться виміряти спектри. Так, в задачах розпізнавання мови спектральний аналіз, як правило, передує подальшій спеціальній обробці. В системах стиснення смуги мовних сигналів спектральний аналіз є звичайно основною операцією. В системах радіолокацій для отримання інформації про швидкість мети також доводиться виміряти спектр.

Слід мати на увазі, що поняття «спектральний аналіз» включає велике число різних вимірювань. В широкому значенні його можна визначити як вимірювання, яке дає точні або наближені значення z-перетворення дискретного сигналу для заданих значень z. Створення адекватної теорії спектрального аналізу утруднено тією обставиною, що на практиці всі спектральні вимірювання проводяться на кінцевих тимчасових інтервалах, довжина яких звичайно визначається інтуїтивно або на основі накопиченого досвіду. Наприклад, «спектр» мовного сигналу дуже сильно залежить від часу, змінюючись приблизно із швидкістю зміни параметрів мовного тракту (біля 10раз за секунду). Не дивлячись на це, в багатьох прикладних задачах короткочасний спектр мовного сигналу є однією з найважливіших характеристик.

Набір алгоритмів, званих алгоритмами швидкого перетворення Фур'є (ШПФ), включає різноманітні методи зменшення часу обчислення дискретного перетворення Фур'є (ДПФ). Оскільки обчислення ШПФ є основною операцією в більшості задач спектрального аналізу, то використовування ШПФ в деяких що зустрічаються на практиці випадках, дозволяє прискорити обчислення ШПФ в 100 і більш раз в порівнянні з методом прямого обчислення ШПФ, має надзвичайно важливе значення і повинне розглядатися як невід'ємна частина застосування методів цифрової обробки сигналів для спектрального аналізу.

Той факт, що одновимірний масив чисел можна виразити через двовимірний масив більш ніж одним способом, пояснює різноманіття алгоритмів ШПФ. Звідси витікає, що математична операція переходу з одновимірного простору в двовимірний є основою всіх алгоритмів ШПФ. При такому єдиному підході до алгоритму ШПФ його різні варіанти можуть бути отриманий порівняно простим способом.

1. Теоретичний розділ

1.1 Опис ШПФ

програма швидке перетворення Фур'є

1.1.1 Основні визначення

Визначення 1. Дано кінцеву послідовність x0, x1, x2,..., xN-1 (у загальному випадку комплексних чисел). ДПФ полягає в пошуку послідовності X0, X1, X2,..., XN-1, елементи якої обчислюються за формулою:

(1)

Визначення 2. Зворотне ДПФ полягає в пошуку послідовності x0, x1, x2,..., xN-1, елементи якої обчислюються за формулою:

(2)

Основною властивістю перетворень (1) і (2) є те, що з послідовності {x} отримується (при прямому перетворенні) послідовність {X}, а якщо застосувати до {X} зворотне перетворення, то знову отримується вихідна послідовність {x}.

Визначення 3. Величина називається повертаючим множником.

1.1.2 Властивості повертаючих множників

При k = 1

Пряме перетворення Фур'є можна виразити через повертаючі множники. Тоді формула (1) матиме вигляд:

(3)

Геометричне тлумачення повертаючих множників наведене на рис.1. Комплексне число (re) представлене у вигляді вектора, що виходить із початку координат (r - модуль числа, а ц - аргумент). Модуль відповідає довжині вектора, а аргумент - куту повороту. Модуль повертаючого множника . дорівнює одиниці, а фаза - 2р/N. Оскільки при множенні комплексних чисел, представлених у показниковій формі, їхні модулі перемножуються, а аргументи підсумовуються, множення вихідного числа на повертаючий множник не змінить довжину вектора, але змінить його кут. Тобто, відбудеться повертання вектора на кут /N.

З формули (3) можна визначити геометричний зміст перетворення Фур'є таким чином: представити N комплексних чисел-векторів з набору {x}, кожне у вигляді суми векторів з набору {X}, повернених на кути, кратні 2р/N.

Рис. 1. Геометричне тлумачення повертаючих множників

1.1.3 Основні формули

Теорема 1. Якщо комплексне число представлене у вигляді e j2рN, де N - ціле, то e j2рN = 1.

Теорема 2. Величина періодична по k і по n з періодом N. Тобто, для будь-яких цілих l і m виконується рівність:

(4)

Теорема 3.

Для величини справедлива формула:

(5)

З наведених теорем визначається основна ідея алгоритму ШПФ:

1. Необхідно розділити суму (1) з N доданків на дві суми по N/2 доданків, і обчислити їх окремо. Для обчислення кожної з підсум, треба їх теж розділити на дві і т.д.

2. Необхідно повторно використовувати вже обчислені доданки.

При обчисленні алгоритму ШПФ застосовують або "проріджування за часом" (в першу суму попадають доданки з парними номерами, а в другу - з непарними), або "проріджування за частотою" (в першу суму попадають перші N/2 доданків, а в другу - інші). Обидва варіанти рівноцінні. В силу специфіки алгоритму доводиться застосовувати тільки N, що є ступенями 2.

Теорема 4. Визначимо ще дві послідовності:{x[even]} і {x[odd]} через послідовність {x} таким чином:

x[even]n = x2n, x[odd]n = x2n+1, (6)

n = 0, 1,..., N/ 2-1

Нехай до цих послідовностей застосовані ДПФ і отримані результати у вигляді двох нових послідовностей {X[even]} і {X[odd]} по N/2 елементів у кожній.

Елементи послідовності {X} можна виразити через елементи послідовностей {X[even]} і {X[odd]} за формулою:

(7)

Формула (7) дозволяє скоротити число множень удвічі (не враховуючи множень при обчисленні X[even]k і X [odd]k), якщо обчислювати Xk не послідовно від 0 до N - 1, а попарно: X0 і XN/2, X1 і XN/2+1,..., XN/ 2-1 і XN. Пари утворяться за принципом:

Xk і XN/2+k.

Теорема 5. ДПФ можна обчислити і за формулою:

(8)

З теореми випливає, що можна не зберігати обчислені значення X[even]k і X[odd]k після обчислення чергової пари, і одне обчислення можна використовувати для обчислення двох елементів послідовності {X}.

На цьому кроці буде виконане N/2 множень комплексних чисел. Якщо застосувати подібні схеми для обчислення послідовностей {X[even]} і {X[odd]}, то кожна з них вимагатиме N/4 множень, разом ще N/2. Продовжуючи аналогічно далі log2N разів, можна дійти до сум, що містять лише один доданок, так що загальна кількість множень рівна (N/2)log2N.

Висновок:

В основі алгоритму ШПФ лежать такі формули:

(9)

Відомі два різновиди алгоритмів ШПФ - проріджування за часом (decimation in time - DIT) і проріджування по частоті (decimation in frequency - D1F), що мають однакову обчислювальну складність.

2. Розробка блок-схеми алгоритму ШПФ з основою 4

2.1 Біт інверсний порядок видачі даних

Процес розбиття на парні та непарні відліки - це звичайна перестановка вхідних даних і як обчислювальний процес вона розглядатися не може, хоча при великих значеннях N може займати багато часу. Однак, існує просте правило проріджування: відліки вхідної послідовності повинні бути переставлені в біт - зворотньому (біт-інверсному) порядку своїх двійкових номерів. Це значно економить час і ресурси.

2.2 Розробка граф-схеми алгоритму ШПФ з основою 4

3. Обрахунки

1. Кількість ярусів для виконання ШПФ визначається наступною формулою:

V=logbaseN=log41024=5

2. Кількість метеликів на одному ярусі:

Кмет1=N/base=1024/4=256 (метеликів)

3. Загальна кількість метеликів для виконання ШПФ:

Кмет=Кмет1*V=256*5=1280 (метеликів)

4. Для виконання 1 метелика необхідно 22 операцій додавань. Отже загальна кількість додавань становить:

Кдод=Кмет*22=1280*22=28160 (операцій)

5. Для виконання 1 метелика необхідно 12 операцій множення. Отже загальна кількість множень становить:

Кмнож=Кмет*12=1280*12= 15360 (операцій)

6. Для виконання 1 метелика необхідно 4 операції читання дійсної частини, 4 операції читання уявної частини, 6 операції читання вагових коефіцієнтів, 4 операції запису дійсної частини, 4 операції запису уявної частини. Отже для виконання усього ШПФ необхідна кількість операцій запису/читання становить:

Кзап/чит=Кмет*(4+4+4+4+6)=1280*22=28160 (операцій)

7. Сумарна кількість операцій становить:

Ксум=28160+28160+15360= 71680 (операцій)

4. Дослідження роботи програми

Рис. 4.1 Вхідні дані

Рис. 4.2 Результати обрахунку

Рис. 4.3 Абсолютна величина чисел

Рис. 4.4 Дійсна частина чисел

Рис. 4.5 Уявна частина чисел

Висновки

В розрахунковій роботі розглянуто спосіб реалізації алгоритму ШПФ за основою 4. Вхідні дані представляються 4096-ма вхідними відліками, що містять дійсну та уявну частину.

В результаті роботи було вивчено алгоритми швидкого перетворення Фур'є за основою 4 з прорідженням у часі.

Також було отримано часові характеристики алгоритмів ШПФ та ДПФ. В результаті було зроблено висновок щодо швидкодії виконання цих двох алгоритмів. З результатів виконання програми бачимо що алгоритм ДПФ виконався за ~45 секунд. Алгоритм ШПФ виконався за ~48 секунд, при кількості точок N=1024. Бачимо, що реалізація алгоритму ДПФ виконується швидше на декілька секунд від алгоритму ШПФ.

Література

Цифровые фильтры и устройства обработи сигналов на интегральных микросхемах: Справочное пособие/Ф.Б.Высоцкий, В.И. Алексеев, В.П. Пачин и др.; Под ред. Б.Ф.Высоцкого.-М.: Радио и связь, 1984.-216с.

Цифровая обработка сигналов/ А.Б.Сергиенко - СПб.:Питер, 2002.-608с.

http://www.analog.com/ru/processors-dsp/tigersharc/adsp-ts101s/products/product.html

Цифрове опрацювання сигналів та зображень: Алгоритми та реалізація.

Навчальний посібник до лекційного курсу з дисципліни “Проектування комп'ютерних засобів обробки сигналів та зображень” для студентів спеціальностей 7.091501 і 8.091501 "Комп'ютерні системи та мережі" 7.091503 і 8.091503 “Спеціалізовані комп'ютерні системи.

Размещено на Allbest.ru

...

Подобные документы

  • Спосіб реалізації алгоритму перетворення Фур`є для сигнального процесора ADSP-2181 для 20-розрядних вхідних даних з часовим прорідженням. Механізми обчислення швидкого перетворення Фур`є за заданою основою. Алгоритм перетворення на заданому процесорі.

    курсовая работа [1,6 M], добавлен 03.01.2014

  • Створення алгоритму фрактального стиснення з втратами для зображень. Основні принципи методу, його обґрунтування та алгоритм реалізації. Характеристика типової схеми фрактального стиснення. Побудова алгоритму, його представлення та афінне перетворення.

    курсовая работа [932,1 K], добавлен 10.07.2017

  • Історія створення мови С#. Аналіз алгоритмів кодування даних. Розробка системи в середовищі Visual Studio 2008 Express. Схема шифрування алгоритму DES. Дослідження алгоритму RC2. Приклади хешів RIPEMD-160. Програмна реалізація основних процедур системи.

    дипломная работа [1,7 M], добавлен 25.10.2012

  • Створення алгоритму програмної моделі розкладу в учбовому закладі для ефективного вирішення завдань автоматичного складання розкладу, шляхом підбору найбільш оптимальних варіантів. Шляхи реалізації розробленого алгоритму в середовищі Mathemetica 5.0.

    дипломная работа [5,0 M], добавлен 25.10.2012

  • Ортогонaлізування функцій. Порівняння дискретного та хвильового перетворення. Інтерполяційні поліноми Лагранжа і Ньютона. Метод найменших квадратів. Побудова кривої для заданих результатів вимірювань. Розв’язання задачі по Лапласу операційним методом.

    курсовая работа [2,2 M], добавлен 10.04.2012

  • Перетворення координат: афінне перетворення на площині, тривідерне афінне перетворення. Властивості афінного перетворення, його характерні особливості. Операції масштабування, переносу, повороту в бібліотеці Opengl на прикладі програми побудови фігури.

    контрольная работа [724,3 K], добавлен 12.09.2009

  • Дослідження етапів розробки програмної реалізації криптографічного алгоритму RC5. Опис об'єкту, що потребує захисту: операційне середовище, тип програмного забезпечення. Блок-схема алгоритму функціонування програми криптозахисту. Листінг тесту програми.

    курсовая работа [4,4 M], добавлен 28.10.2010

  • Виділення інформаційних залежностей. Створення віртуальної декартової топології. Визначення розмірів об’єктів та введення вихідних даних. Масштабування та розподілення підзадач між процесам. Множення матричних блоків. Програмна реалізація алгоритму Фокса.

    отчет по практике [766,0 K], добавлен 05.06.2015

  • Розробка інформаційної системи зберігання, обробки та моделювання алгоритмів обчислення статистичних даних для змагань з плавання і з інших видів спорту. Зміст бази даних, реалізація БД засобами MySQL, створення клієнтського додатка в середовищі PHP.

    дипломная работа [4,5 M], добавлен 17.09.2011

  • Розробка програмного продукту на мові С++ з використанням об’єктноорієнтованого підходу для математичних обрахувань задач з геометричними фігурами коло та кільце. Можливості швидкого обчислення виведених даних, їх графічне зображення у вікні програми.

    курсовая работа [778,8 K], добавлен 06.05.2014

  • Геометричні перетворення зображення. Усунення розмитості зображення за допомогою алгоритму сліпої деконволюції або з допомогою фільтра Вінера. Моделювання Blur та відновлення розмитого зображення. Імітація (Motion Blur) розмитості рухом, його відновлення.

    курсовая работа [1,8 M], добавлен 22.11.2014

  • Огляд суті гри "Доміно", характеристика її існуючих програмних реалізацій. Розробка евристичного алгоритму для розв’язання ігрової ситуації "Доміно". Програмна реалізація алгоритму мовою програмування високого рівня C#. Отладка оціночної функції.

    курсовая работа [1,4 M], добавлен 14.05.2012

  • Призначення модулів та їх структура. Компіляція програм, які використовують модулі. Програмна реалізація алгоритму створення бібліотеки операцій над векторами. Інструкція користувачеві програми. Контрольні приклади та аналіз результатів їх реалізації.

    курсовая работа [145,6 K], добавлен 20.03.2011

  • Види секретної інформації та методи захисту. Тип і об’єм вхідних даних. Програмна реалізація системи алгоритму шифрування зі стисненням. Призначення та опис програмного продукту Export. Алгоритми захисту зберігання та обміну секретною інформацією.

    дипломная работа [1,1 M], добавлен 19.09.2012

  • Зародження системи Matlab. Високоефективна мова інженерних і наукових обчислень. Інтерактивна система, основним об'єктом якої є масив. Обчислення мінімумів, нулів функцій. Апроксимація й інтерполяція даних. Обчислення кінцевих різниць, перетворення Фур'є.

    лабораторная работа [146,4 K], добавлен 18.01.2013

  • Розробка програмних модулів базових операцій обробки на підставі розрядно-логарифмічного кодування. Дослідження алгоритму розв'язку системи лінійних алгебраїчних рівнянь. Реалізація алгоритму Гауса. Покращення точності розрахунків за допомогою рл-чисел.

    курсовая работа [427,2 K], добавлен 20.11.2013

  • Створення інформаційних таблиць бази даних. Створення екранних форм як засобу організації інтерфейсу користувача. Створення запитів для вибору, сортування і обчислення з використанням даних однієї таблиці. Оформлення звітів за допомогою команд MS Access.

    лабораторная работа [397,7 K], добавлен 09.09.2010

  • Мова Асемблера, її можливості та команди. Розробка алгоритму програми, його реалізація в програмі на мові Асемблера. Введення елементів матриці та обчислення cуми елементів, у яких молодший біт дорівнює нулю. Методи створення програми роботи з матрицями.

    контрольная работа [50,3 K], добавлен 12.08.2012

  • Розробка програми для моделювання роботи алгоритму Дейкстри мовою C# з використанням об’єктно-орієнтованих принципів програмування. Алгоритм побудови робочого поля. Програмування графічного інтерфейсу користувача. Тестування програмного забезпечення.

    курсовая работа [991,4 K], добавлен 06.08.2013

  • Використання математичного сопроцесора або його емулятора при програмуванні на мові асемблера з використанням дробових чисел. Створення програми на мові ASM-86, яка реалізує функції [x], {x}, |X|. Алгоритм перетворення цілого числа в дійсне та навпаки.

    курсовая работа [12,4 K], добавлен 08.08.2009

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.