Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Цифровая обработка сигналов.-1

.pdf
Скачиваний:
14
Добавлен:
05.02.2023
Размер:
912.29 Кб
Скачать

Министерство образования и науки Российской Федерации

ТОМСКИЙ УНИВЕРСИТЕТ СИСТЕМ УПРАВЛЕНИЯ И РАДИОЭЛЕКТРОНИКИ (ТУСУР)

КАФЕДРА ТЕЛЕКОММУНИКАЦИЙ И ОСНОВ РАДИОТЕХНИКИ (ТОР)

УТВЕРЖДАЮ Зав. кафедрой ТОР А.Я. Демидов

Методические указания к лабораторным работам

по дисциплине «Цифровая обработка сигналов» (5 семестр) специальности «Инфокоммуникационные технологии и системы связи»

(код 210700.62)

РАЗРАБОТЧИКИ:

________А.А. Гельцер,

доцент каф. ТОР

________Р.Р. Абенов,

аспирант каф. ТОР

________Е.В. Рогожников, аспирант каф. ТОР

ТОМСК – 2013

Содержание

 

ВВЕДЕНИЕ...............................................................................................................

2

ЛАБОРАТОРНАЯ РАБОТА №1. ...........................................................................

2

ЛАБОРАТОРНАЯ РАБОТА №2 ............................................................................

9

ЛАБОРАТОРНАЯ РАБОТА №3 ..........................................................................

12

ЛАБОРАТОРНАЯ РАБОТА №4 ..........................................................................

16

СПИСОК ИСПОЛЬЗОВАННОЙ ЛИТЕРАТУРЫ ..............................................

23

ПРИЛОЖЕНИЕ ......................................................................................................

24

1

ВВЕДЕНИЕ

Лабораторные работы по дисциплине «Цифровая обработка сигналов» предназначены для освоения системы математических вычислений Scilab. Эта система похожа на систему MatLab, но в отличие от нее она является открытой и бесплатной. Пакет программ системы Scilab и ее расширения можно найти в интернете. Причем пакет постоянно обновляется и совершенствуется.

Имеются подробные руководства и книги на русском языке по системе Scilab [1,2], многие из которых можно найти также в сети интернет. Для овладения возможностями всего пакета при математических расчетах потребуется значительное количество времени. В то же время при решении задач в студенческих работах часто необходимо выполнять лишь простые вычисления и построения графиков. Быстро освоить приемы выполнения таких задач (от простых к более сложным) можно изучая примеры программ, которые приведены в каждой лабораторной работе. Примеры содержат подробные пояснения и соответствуют направлению индивидуальных работ по дисциплине «Цифровая обработка сигналов».

Кроме этого желательно дополнительно знакомиться с соответствующими разделами книг по системе Scilab [2].

Результаты выполненных лабораторных работ оформить в виде отчета, содержащего коды программ, графики и пояснения к ним.

ЛАБОРАТОРНАЯ РАБОТА №1.

Изучение основ работы в пакете Scilab

Задание на работу:

Часть №1. Построение графиков функций.

Цель: научиться создавать программы построения графиков функций (от простых к более сложным).

Пример 1. Построить график косинусоиды y=cosx, 0≤x≤2π.

2

Ниже даны пояснения, комментарии (курсив) и коды программы, написанные шрифтом Courier New.

//– это символ комментария. Замечание: для

//разделения целого и десятичной дроби используется

//не запятая, а точка.

x=[0:0.1:2*%pi]; //%pi – число ; x определяется в

//виде массива точек равномерного разбиения

//сегмента [0;2*%pi] с шагом 0.1 (или вектора с

//компонентами 0,0.1,0.2,…,6.2 ). В конце команды

//ставим «;», иначе произойдет вывод в командном

//окне всех компонент вектора x

plot(x,sin(x)) // строим простой график (simple // plot)

Эту программу (две строки) можно набрать в командном окне и запустить на выполнение нажатием клавиши Enter. Появится графическое окно с графиком косинусоиды. Для удобства программирования в Scilab предусмотрен текстовый редактор SciNotes, который находится во вкладке «Инструменты». После написания скрипта его можно запустить нажатием кнопки F5 (или кнопкой «Сохранить и выполнить» на панели инструментов). Это окно удобно использовать для сохранения программы в виде отдельного файла с каким-либо именем и расширением .sce. Чтобы перед запуском написанного кода автоматически удалять все открытые графические окна, необходимо в начале кода вписать строку:

xdel(winsid());//закрываем все графические окна

Чтобы очистить командное окно, используется команда clc, которую тоже удобно писать в самом начале кода.

Пример 2. Построить графики функций y=cosx и y=sin2x на одном рисунке.

x=[0:0.1:2*%pi];

plot(x, cos(x), x, sin(2*x))//построение двух

// графиков в одном окне

Пример 3. Назначение правого положения оси y

x=[0:0.1:2*%pi];

plot(x,sin(x))

a=gca();//присвоение символу «a» роли оператора // назначения

3

a.y_location ="right";// назначение на графике

// правого положения оси y

Индивидуальное задание.

Построить графики функции y = y(x) при различных положениях оси y,

если y1=x3, y2=3x2+1, y3=arctg(x), y4=sin(x2), y5=cos(2x+3), y6=lg(4-x), -2≤x≤3.

Таблица 1. Индивидуальное задание №1 по вариантам.

Вариант

1

2

3

4

5

6

7

8

9

 

 

 

 

 

 

 

 

 

 

Y

y1+y2

y1+y3

y1+y4

y1+y5

y2+y3

y2+y4

y2+y5

y3+y4

y3+y5

 

 

 

 

 

 

 

 

 

 

Вариант

10

11

12

13

14

15

16

17

18

 

 

 

 

 

 

 

 

 

 

Y

yy2

y1×y3

y1×y4

y1×y5

y2×y3

y2×y4

y2×y5

y3×y4

y3×y5

 

 

 

 

 

 

 

 

 

 

Вариант

19

20

21

22

23

24

25

26

27

 

 

 

 

 

 

 

 

 

 

y

y4+y5

y4×y5

y1+y6

y2+y6

y3+y6

y4+y6

y5+y6

y1×y6

y2×y6

 

 

 

 

 

 

 

 

 

 

Часть №2. Построение усложненных графиков функций.

Цель: научиться создавать программы построения более сложных графиков функций.

Пример 4. Формирование кривой графика функции определенного вида

x=1:10;//x представлен вектором с компонентами

// 1,2,3,…,10 plot(x,x.*x,'*cya--')

Здесь .* – знак поэлементного способа умножения x на x, в результате получаем вектор x2 с компонентами 1, 4, 9,…, 100;

'*cya--' – эта запись относится к области LineSpec и задает вид кривой графика. Первый символ записи * внутри кавычек характеризует тип маркера кривой (описание маркеров находится в соответствующей таблице ПРИЛОЖЕНИЯ). Запись «cya» определяет цвет кривой (цвет выбирается в соответствующей таблице ПРИЛОЖЕНИЯ 1), символ «– –» задает тип линии.

Пример 5. Задание толщины всех линий на графике

x=[0:0.1:2*%pi];

xset("thickness",2);//установка толщины всех линий

4

//графика выбором числа (число 2 задает линии

//толщиной в 2 пикселя)

plot(x,sin(x))

Пример 6. Задание ширины и высоты графического окна

f4=scf(4);//функция scf создает графическое окно с

//номером 4 и делает //его текущим

f4.figure_size = [600, 400];//установка ширины и

//высоты графического окна

//с номером 4 в единицах экрана. Если монитор имеет

//разрешение 1024x768,

//то оно может быть максимальным размером

//графического окна.

plot()//вывод некоторых графиков по умолчанию clf(f4);очистка графического окна с номером 4 dim=xget("wdim");//вывод в командном окне размера // текущего графического окна

Индивидуальное задание.

Построить графики трех функций в одном окне, выбирая для них оригинальные маркеры, цвета, типы и толщины линий. Функции брать из лабораторной работы №1. Причем, если y=y1+y2, то y1 – первая функция, y2

– вторая функция, y – третья функция.

Часть №3. Построение графиков непериодических и периодических функций (сигналов).

Цель: научиться создавать программы построения кусочно-заданных непериодических и периодических сигналов (функций).

Пример 7. Представление сигналов по условию первой задачи индивидуального задания

E = 1; //амплитуда сигнала

Ts = 1; //промежуток времени наблюдения сигнала

//Представление данного сигнала в виде кусочно-заданной

//функции

Ts=1; E=1;

function s = sz(t)//function – endfunction –

//оператор создания

//функции

if ((t >=0) & (t <=2*Ts/3)) then s = -E;

5

//условный оператор «если-то»

elseif ((t >2*Ts/3) & (t <=Ts)) then s = E;//условный оператор «иначе-если-то»

end endfunction

/////////////////// Вывод графика заданного сигнала///////////////////////////////////

t = [0: Ts/100: Ts];

clf(); //очистка графического окна с номером 0 (по // умолчанию)

plot(t,sz);// построение графика заданного сигнала zoom_rect([min(t),-1.1,max(t),1.1]); //установка

//границ окна вдоль осей координат оператором

//zoom_rect[xmin,ymin,xmax,ymax] xtitle('Grafic sz(t)','t','sz(t)',boxed=1);

//отображение названий графика, оси абсцисс, оси

//ординат;

//помещение названий в рамку только при

//boxed=1

xgrid();//установка сетки в графическом окне

//////Формирование периодического сигнала и вывод его графика//////

t=0:Ts/100:3*Ts;

y = t-(floor(t/Ts))*Ts;//y - линейно изменяющаяся от

//0 до Ts периодическая переменная с периодом Ts;

//floor() – операция выделения наибольшего целого,

//меньшего аргумента

for i = 1:length(y);//for–end – оператор цикла,

//length(y) – определяет количество компонент

//вектора y

a=sz(y(i));//дискретные значения периодически // продолженного заданного сигнала

sp(i)=a;// периодически продолженный заданный сигнал end

scf(1); // функция scf создает графическое окно с

//номером 1 и делает его текущим clf(1);

plot(t,sp);//вывод периодически продолженной функции

//(периодической функции)

zoom_rect([min(t),-1.1,max(t),1.1]); xgrid();

///Формирование непериодического сигнала и вывод его графика ////

t=(-2*Ts:Ts/100:3*Ts);

function f = s0(t)// задание непериодической функции // (заданной функции, продолженной нулями)

if ((t <0) | (t > Ts)) then f = 0; else f = sz(t);

6

end

endfunction scf(2); clf(2);

plot(t,s0);// вывод непериодической функции zoom_rect([min(t),-1.1,max(t),1.1]); xgrid();

////////////////////////////////////////////////////////////////////////////////////////////////////////////////

Индивидуальное задание.

Построить графики заданной функции, ее непериодического и периодического продолжения. Исходные данные взять из таблицы.

А)

B)

C)

Рисунок 1. Форма сигналов

ti=ki(TS/5)

k – формат сигнала (A, B или C), ki – коэффициенты

Таблица 2. Индивидуальное задание №3 по вариантам.

7

Вариант

Шифр

Вариант

Шифр

сигнала

сигнала

 

 

 

k k1k2k3

 

k k1k2k3

1

A 1 2 3

16

B 1 4 5

 

 

 

 

2

A 1 2 4

17

B 2 3 4

 

 

 

 

3

A 1 2 5

18

B 2 3 5

 

 

 

 

4

A 1 3 4

19

B 2 4 5

 

 

 

 

5

A 1 3 5

20

B 3 4 5

 

 

 

 

6

A 1 4 5

21

C 1 2

 

 

 

 

7

A 2 3 4

22

C 1 3

 

 

 

 

8

A 2 3 5

23

C 1 4

 

 

 

 

9

A 2 4 5

24

C 1 5

 

 

 

 

10

A 3 4 5

25

C 2 3

 

 

 

 

11

B 1 2 3

26

C 2 4

 

 

 

 

12

B 1 2 4

27

C 2 5

 

 

 

 

13

B 1 2 5

28

C 3 4

 

 

 

 

14

B 1 3 4

29

C 3 5

 

 

 

 

15

B 1 3 5

30

C 4 5

 

 

 

 

8

ЛАБОРАТОРНАЯ РАБОТА №2

Шумы квантования в АЦП – оценка и анализ

Одна из наиболее существенных составляющих ошибки при измерениях с помощью АЦП - погрешность квантования – является результатом самого процесса преобразования. Погрешность квантования - это погрешность, вызванная значением шага квантования и определяемая как ½ величины наименьшего значащего разряда (LSB) [3]. Она не может быть исключена в аналого-цифровых преобразованиях, так как является неотъемлемой частью процесса преобразования, определяется разрешающей способностью АЦП и не меняется от АЦП к АЦП с равным разрешением.

Передаточная характеристика АЦП - это функция зависимости кода на выходе АЦП от напряжения на его входе. Такой график представляет собой кусочно-линейную функцию из 2N "ступеней", где N - разрядность АЦП. Каждый горизонтальный отрезок этой функции соответствует одному из значений выходного кода АЦП (см. рис. 7). Если соединить линиями начала этих горизонтальных отрезков (на границах перехода от одного значения кода к другому), то идеальная передаточная характеристика будет представлять собой прямую линию, проходящую через начало координат.

Выходной цифровой код

111

110

101

100

011

010

001

000

1/8

2/8

3/8

4/8

5/8

6/8

7/8

Входное напряжение, приведенное к полной шкале

Рисунок 2. Идеальная передаточная характеристика 3-разрядного АЦП

9