Лабораторная работа №6 «работа с библиотекой iqmath»




НазваниеЛабораторная работа №6 «работа с библиотекой iqmath»
Дата публикации07.11.2013
Размер42,6 Kb.
ТипЛабораторная работа
pochit.ru > Информатика > Лабораторная работа
ЛАБОРАТОРНАЯ РАБОТА №6

«РАБОТА С БИБЛИОТЕКОЙ IQMATH»
Цель:

  • Сравнение целых и дробных вычислений

  • Обсуждение ограничений при разработке в целых числах

  • Сравнение плавающей точки и IQ

  • Описание представления чисел в IQmath и проблем, которые оно решает


1. Ознакомимся с представлением чисел в формате с плавающей точкой, реализованный в библиотеке IQmath:

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



–2I + 2I–1 + … + 21 + 20 . 2–1 + 2–2 + … + 2Q

Преимущество – точность одинакова для всех чисел выбранного формата, недостаток – ограниченный диапазон по сравнению с плавающей точкой.
Положение десятичной запятой определяется глобальным параметром GLOBAL_Q, который может меняться от 1 до 30 (Q1 до Q30). Все функции в программе будут использовать именно это значение Q.
Фрагмент примера в СИ

#define GLOBAL_Q 18 // установить в файле “IQmathLib.h”

_iq Y, M, X, B; // для всех значений Q = 18

Y = _IQmpy(M,X) + B; // для вычислений используется Q = 18
2. Содержание библиотеки IQMath:

  • Библиотека IQMath включает в себя арифметические и логические функции



  • различные функции по преобразованию форматов

например, _IQint(A), _IQtoF(B) и др.

3. Реализуем синусоидальную функцию и выведем ее на экран в виде графической зависимости. Откроем готовый проект, в котором уже находятся все модули, необходимые для этого. Запишем исходный текст программы:
/*подключаем заголовочные файлы*/

// подключение модуля IQMath

#include "IQMathLib.h"

//описание переменных и функций главного модуля

#include "main.h"
//описание переменных и функций главного модуля

#include "filter_1.h"
_iq sin_value;

_iq sin_noise_value;

_iq sin_filter;

FILTER_1 filtr = FILTER_1_DEFAULTS;

void main(void)

{

//НАЧАЛО ВЫПОЛНЕНИЯ ПРОГРАММЫ
while(1)

{

l_counter+=_IQ(0.1);

sin_value=_IQsin(l_counter);

}
}
Добавим к исходной синусоиде «шум»:
_iq sin_value;

_iq sin_noise_value;

void main(void)

{

//НАЧАЛО ВЫПОЛНЕНИЯ ПРОГРАММЫ

while(1)

{

l_counter+=_IQ(0.1);

sin_noise_value=_IQmpy(_IQ(0.5),_IQsin(l_counter*8));

sin_value=_IQsin(l_counter)+sin_noise_value;

}
}
Полученная зависимость имеет примерно такой вид:



4. Теперь с помощью простейшего фильтра первого порядка (инерционного звена) реализуем фильтрацию зашумленного сигнала.

Передаточная функция такого фильтра



Преобразуем ее к разностному уравнению

.

Подключим к проекту файл «filter_1.с»:
#include "IQmathLib.h" // подключение библиотеки IQmath

#include "filter_1.h" // подключение заголовочного файла

void filter_1_calc(FILTER_1 *v)

{

v->output=_IQmpy(v->Kf0,v->input)+_IQmpy(v->Kf1,v->output);

}
Изменим исходную программу на нижеследующую
/*подключаем заголовочные файлы*/

//описание регистров и перифирийных устройств микроконтроллера

#include "DSP28_Device.h"

// подключение модуля IQMath

#include "IQMathLib.h"

//описание переменных и функций главного модуля

#include "main.h"

#include "filter_1.h" //подключаем модуль фильтра
_iq sin_value;

_iq sin_noise_value;

_iq sin_filter;
//создаем объект filtr и присваиваем ему значения по умолчанию

FILTER_1 filtr = FILTER_1_DEFAULTS;
void main(void)

{

//НАЧАЛО ВЫПОЛНЕНИЯ ПРОГРАММЫ
filtr.Kf0=_IQ(0.01); // инициализация первого коэффициента

filtr.Kf1=_IQ(0.99); // инициализация второго коэффициента
while(1)

{

l_counter+=_IQ(0.1);

sin_noise_value=_IQmpy(_IQ(0.1),_IQsin(l_counter*80));

sin_value=_IQsin(l_counter)+sin_noise_value;

filtr.input=sin_value; /*передаем значения для фильтрации*/

filtr.calc(&filtr);/* считаем фильтр */

sin_filter=filtr.output;

}
}

Работа фильтра представлена на рисунке ниже:

5. С использованием предложенного алгоритма создания модулей, напишите модуль фильтра скользящего среднего по произвольному числу выборок.
Запишем исходный текст программы:
/*подключаем заголовочные файлы*/

//описание регистров и перифирийных устройств микроконтроллера

#include "DSP28_Device.h"

// подключение модуля IQMath

#include "IQMathLib.h"

//описание переменных и функций главного модуля

#include "main.h"

#include "filter_1.h" //подключаем модуль фильтра
_iq sin_value;

_iq sin_noise_value;

_iq sin_filter;



//создаем объект filtr и присваиваем ему значения по умолчанию

FILTER_1 filtr = FILTER_1_DEFAULTS;
_iq x[20];

int n=20;

int i;

_iq result_1;



_iq Sr(_iq array[],int n)

{

_iq sum;

sum=x[0];

for (i=1; i

sum=_IQdiv(sum,_IQ(n));

return sum;

}
void main(void)

{

//НАЧАЛО ВЫПОЛНЕНИЯ ПРОГРАММЫ
filtr.Kf0=_IQ(0.01); // инициализация первого коэффициента

filtr.Kf1=_IQ(0.99); // инициализация второго коэффициента
while(1)

{

l_counter+=_IQ(0.1);

sin_noise_value=_IQmpy(_IQ(0.1),_IQsin(l_counter*80));

sin_value=_IQsin(l_counter)+sin_noise_value;

filtr.input=sin_value; /*передаем значения для фильтрации*/

filtr.calc(&filtr);/* считаем фильтр */

sin_filter=filtr.output;



result_1=Sr(x,n);

for (i=n; i>0; i--) {x[i]=x[i-1];}

x[0]=sin_value;

}

}
В результате получили фильтр, который на основании n-выборок «сглаживает» зашумленную синусоиду. При этом несколько уменьшается амплитуда полезного сигнала.

Похожие:

Лабораторная работа №6 «работа с библиотекой iqmath» iconЛабораторная работа
Лабораторная работа: Наблюдение сплошного и линейчатого спектров излучения Физика 11 класс моу сош с. Карасу
Лабораторная работа №6 «работа с библиотекой iqmath» iconЛабораторная работа № Цель: Систематизировать знания по видам тканей
Тема. Волокнистые швейные материалы. Пряжа. Свойства ткани. Лабораторная работа №2
Лабораторная работа №6 «работа с библиотекой iqmath» icon«Алюминий. Строение атома. Физические и химические свойства простого вещества»
Основные формы: беседа, самостоятельная работа, лабораторная работа, химический эксперимент
Лабораторная работа №6 «работа с библиотекой iqmath» iconКонспект урока по окружающему миру литературному чтению во 2 классе...
Методы и методические приемы: рассказ в сочетании с беседой, работа по учебникам, словарная работа, чтение стихотворений учащимися,...
Лабораторная работа №6 «работа с библиотекой iqmath» iconЛабораторная работа №1 по теме «Определение цены деления измерительного прибора»
Измерение физических величин. Точность и погрешность измерений. Лабораторная работа №1 по теме «Определение цены деления измерительного...
Лабораторная работа №6 «работа с библиотекой iqmath» iconЛабораторная работа №2 Работа с меню. Многоформенное приложение
С помощью компонентов Form, Edit, Button, Panel, MainMenu создайте приложение для шифровки текста. На главной форме можно расположить...
Лабораторная работа №6 «работа с библиотекой iqmath» iconЛабораторная работа № Тема: Создание отчетов Access. Мастер отчетов....
Запустите Access и откройте базу данных Student, созданную в Лабораторных работах 1, 2 и 3
Лабораторная работа №6 «работа с библиотекой iqmath» iconЛабораторная работа №1 По теме ««Изучение Internet в целях использовании...
Лабораторная работа предназначена для: обоснования потребности, необходимости и удобства использования среды Internet для поиска...
Лабораторная работа №6 «работа с библиотекой iqmath» iconЛабораторная работа №1 По теме ««Изучение Internet в целях использовании...
Лабораторная работа предназначена для: обоснования потребности, необходимости и удобства использования среды Internet для поиска...
Лабораторная работа №6 «работа с библиотекой iqmath» iconЛабораторная работа № Работа с величинами
Использование констант делает программы легче читаемыми и позволяет проще вносить изменения: отпадает необходимость многократно исправлять...
Вы можете разместить ссылку на наш сайт:
Школьные материалы


При копировании материала укажите ссылку © 2019
контакты
pochit.ru
Главная страница