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

КСД-12 ОСИ / Лаб. раб. №2

.doc
Скачиваний:
25
Добавлен:
03.03.2016
Размер:
156.16 Кб
Скачать

Лабораторная работа № 2

Обработка данных измерений и их графическое представление.

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

Общие сведения.

В системе MATLAB содержится большое число функций и процедур, реализующих стандартные математические операции, используемые в инженерной математике. Рассмотрим те из них, которые имеют отношение к обработке данных, полученных в результате диагностирования или проведения эксперимента с целью определения параметров и характеристик объекта диагностики, а также получения математической модели. Сюда можно отнести операции с полиномами, обработку данных измерений, аппроксимацию и интерполяцию данных и функций графического отображения результатов обработки данных.

Операции с полиномами.

Полином ( многочлен ) как функция определяется выражением :

Р( х )=anxⁿ + …+ а2х² + а1х + а0

В MATLAB полином задается и сохраняется в виде вектора. Ввод полинома осуществляется также как и ввод вектора длиной n+1, где n – порядок полинома.

Элементами вектора являются коэффициенты полинома от аn до а0 в указанном порядке :

Р=[ an … a2 a1 a0 ].

Умножение и деление полиномов степеней n и m :

Произведением двух полиномов является полином степени n+m , коэффициенты которого определяют посредством простого перемножения этих двух полиномов. Эта операция сводится к построению расширения вектора коэффициентов по заданным векторам коэф. полиномов – сомножителя. В математике эту операцию называют сверткаой векторов, а получаемый вектор – вектором сверткой.

В MATLAB ее осуществляет функция conv( P1 , P2 ).

Функция deconv( P1 , P2 ) выполняет деление полинома P1 на P2 , т.е. реализует обратную свертку векторов P1 и P2. Она определяет коэф. полинома, который является чистым от деления P1 на P2.

>> P1= [ 1, 2, 3 ]; P2= [ 1, 2, 3, 4, 5, 6 ];

>> P=conv( P1, P2 )

P= 1 4 10 16 22 28 27 18

>> deconv( P, P1 )

ans= 1 2 3 4 5 6

>> deconv( P, P2 )

ans= 1 2 3

В общем случае деление двух полиномов приводит к получению двух полиномов : полинома-результата (чистого) и полинома-остатка. Чтобы получить оба полинома следует задать команду :

[ Q, R]=deconv( B, A ), тогда результат будет выдан в виде вектора Q c остатком в виде вектора R таким образом, что будут выполнено соотношение :

B=conv( A, Q )+R

Для рассм. примера:

>> [ Q, R ]=deconv( P1, P2 )

=deconv( P2, P1 )

Важней является функция roots( p ), позволяющая получить вектор, элементы которого являются корнями заданного полинома Р.

P(x)=x + 8x + 31x + 80x + 94x + 20

>> P=[ 1, 8, 31, 80, 94, 20 ];

>>disp( roots(P) )

-1.0000+3.0000i

-1.0000-3.0000i

-3.7321

-2.000

-0.2679

Обратная операция – построение вектора Р коэффициента по заданному вектору его корней осуществляет функция poly. Обращение к ней: р=poly(r), где r – заданный вектор значений корней, а результат = р – вычисленный вектор коэффициентов полинома.

Пример: p= ; r=roots(p); p=poly(r).

2x + 4x + 3x + 10x + 20x + 5

>> p=[ 2 4 3 10 20 5 ];

>> r=roots(p) r=…

>> p=poly(r)…

Нюанс: получ. коэф. полинома зависят от координаты при старшем Х.

Вычисление производной полинома :

Осуществляет функция poiyder. Имеет три обращения:

а) dp=polyder(p) по заданному полиному р вычисляем вектор dp, элементы которого являются коэффициентами полинома-производной от заданного полинома.

>> P(p)= x + 8x + 31x + 80x + 94x + 20

>> dp=polyder(p)

dp= 5 32 93 160 94

б) dp=polyder( P1, P2 ), выдает коэффициенты полинома производной произведения полиномов Р1 и Р2 .

>> p1= [ 1, 8, 31, 80, 94, 20 ];

>> p2= [ 1, 2, 16, ];

>> p=conv( p1, p2 )

p= 1 10 63 270 750 1488 1544 320

>> dp=polyder( p )

dp= 7 60 315 1080 2250 2976 1544

в) [ q, p ]=polyder( p3, p2 ) вычисляет производную отношения p1/p2 и получает результат в виде отношения q/p , полиномов q и p.

>> p1 =[ 1, 8, 31, 80, 94, 20 ];

>> p2 =[ 1, 2, 16 ];

>> [ q, p ]=polyder( p1, p2 )

q= 3 24 159 636 1554 2520 1464

p= 1 4 36 64 256

>> z=deconv( q, p )

z= 3 12 3

>> y=deconv( p1, p2 )

y= 1 6 3 -22

>> z1 =polyder(y)

z1 = 3 12 3

Обработка данных измерений

Пусть зависимость x(y) задана результатами измерений рядом точек:

Х 2 4 6 8 10

У 5.5 6.3 6.8 8 8.6

В командном окне эту зависимость можно задать как матрицу xy data, содержащую две строки

>> xydata= [ 2 4 6 8 10 ; 5.5 6.3 6.8 8 8.6 ]

xydata=

2.0000 . . . . . . . 10.0000

5.5000 . . . . . . . 8.6000

Функция size( xydata) определяет число строк и столбцов матрицы xydata.

>> size( xydata)

ans =

2 5

C помощью этой же функции size можно установить длину и тип ( строка или столбец ) вектора

>> v = xydata(…)

v= 2.0000

5.5000

4.0000

. . .

8.6000

>> n= size(v)

n=10

>> v1=v’

v1=2.000 5.5000 . . . 8.600

>> size(v’)

ans= 1 10

Функции max(v) и min(v) выдают максимальный и минимальный элементы вектора соответственно.

Функции mean(v) и std(v) определяют среднее значение и среднеквадратичное отклонение от него значений элементов вектора v.

Функции :

Sort(v) – сортирует вектор с элементами в порядке возрастания;

Sum(v) – вычисляет сумму элементов вектора v;

Prod(v) – произведение этих элементов;

Cumsum(v) – формирует вектор такого же типа и размера, у которого любой элемент является суммой всех предшествующих элементов вектора ( вектор кумулятивной суммы );

Cumprod(v) – создает вектор, элементы которого являются произведением предшествующих элементов вектора v;

Diff(v) – создает вектор, размер которого на единицу меньше, т.е. элементы вектора рассчитываются как разность между соседними элементами исходного вектора v.

Данные функции могут быть применены и к матрицам, только описанные операции выполняются не над строками, а над каждым из столбцов матрицы. Т.е. каждый столбец матрицы А рассматривается как переменная, а каждая строка – как отдельное наблюдение.

! Поэтому, если имеем три величины Y1, Y2, Y3 измеренные при некоторых пяти значениях аргументов, то данные аргументов образуют три вектора.

>> y1 = [ 1, 2, 3 ];

>> y2 = [ 4, 5, 6 ];

>> y3 = [ 7, 8, 9 ]

Вначале сформируем из них матрицу измерений так, чтобы векторы Y1, Y2, Y3 отражали столбцы этой матрицы:

>> A = [ Y1’, Y2’, Y3’ ]

A = 1 4 7

2 5 8

3 6 9

Затем к этой матрице можно применять описанные функции.

Если указать 2-ой параметр, то он будет содержать информацию о номерах строк, где находится соответствующий элемент.

>> [ M, n] = maxA

M = 3 6 9

n = 3 3 3

>> [ 5, m ] = mina

N = 1 2 3

m = 1 1 1

Существуют и другие функции , операций над матрицами.

Аппроксимация и интерполяция данных.

Функция аппроксимации polyfit( x, y, n ) позволяет составить математическую модель в виде полинома , заданного порядка n по заданному массиву аргумента х и массива измеренной величины у.

Таблица 2.1 Вид аппроксимирующей зависимости от порядка n

n

Вид аппроксимации

1

Линейная

2

Квадратическая

3

Кубическая

4

Четвертой степени

Функции интерполяции две :

Spline( x, y, xi ) – осуществляет интерполяцию кубическими сплайнами;

Функция interp1 осуществляет одномерную табличную интерполяцию.

Обращение : Yi = interp1( x, y, xi, ‘<метод>’)

Таблица 2.2 Значения четвертого аргумента.

Значение

Метод интерполяции

‘nearest’

Ступенчатая

‘linear’

Линейная

‘cubic’

Кубическая

‘spline’

сплайновая

Порядок выполнения работы.

  1. При домашней подготовке:

- изучить особенности использования функций операций с полиномами;

- изучить функции обработки данных измерений;

- изучить особенности использования функций аппроксимации и интерполяции данных;

- изучить особенности графического отображения результатов эксперимента;

- выполнить индивидуальное задание;

- ответить письменно на контрольные вопросы;

- оформить отчет по лабораторной работе.

2. Во время занятия :

- продемонстрировать на компьютере выполнение индивидуального задания и получить допуск к защите лабораторной работы;

- защитить лабораторную работу;

- ознакомиться с заданием на очередную лабораторную работу.

Индивидуальные задания к лабораторной работе № 2

  1. Для заданного полинома :

P(x) = a5x + a4x +a3x + a2x + a1x + a0

а) принять значения коэффициентов аi :

a5 = 1, для четных номеров вариантов N;

a5 = 0,5 для нечетных номеров вариантов N;

a4 = N; a3 = N-5; a2 = N+2; a1 = N+5; a0 = N+10

б) вычислить корни полинома;

в) по корням определить коэффициенты полинома

2. Для заданных двух полиномов

P1 = [ i, j, k ]

P2 = [ i, j, k, l, m, n ],

где i=N; j=N+1; k=N+2; l=N-1; m=N-2; n=N-3; N-номер варианта.

Выполнить операции:

а) умножение conv( p1, p2 );

б) деление deconv( p1, p2 );

в) найти производную полиномов

dp = polyder(p) ( производная произведения )

dp = polyder( p1, p2 ) ( производная частного )

3 . Для измеренных значений функции Y и аргумента X получить математическую модель ( аппроксимирующий полином ) с помощью функции polyfit( x, y, n ) .

Значения X и Y взять из таблицы , согласно варианта, положить

n = [ 1, 2, 3, 4, 5 ].

3.1 . Привести зависимость Y(x) для различных n;

3.2. Построить в одной области графики измеренных дискретных отсчетов и полученных при аппроксимации полиномов. На графиках нанести поясняющие надписи.

Таблица 2.3. Варианты индивидуальных заданий раздела 3

№ варианта

Х начальн.

Шаг дискретиз., Х

К-во отсчетов, Х

У

1

2

3

4

5

6

7

- 0,25

-0,30

-0,35

-0,40

-0,45

-0,50

-0,55

0,1

0,1

0,1

0,1

0,1

0,1

0,1

10

10

10

10

10

10

10

Y1

Y2

Y3

Y4

Y1

Y2

Y3

8

9

10

11

12

13

14

-0,25

-0,30

-0,35

-0,40

-0,45

-0,50

-0,55

0,1

0,1

0,1

0,1

0,1

0,1

0,1

10

10

10

10

10

10

10

Y4

Y1

Y2

Y3

Y4

Y1

Y2

15

16

17

18

19

20

21

-0,25

-0,30

-0,35

-0,40

-0,45

-0,50

-0,55

0,1

0,1

0,1

0,1

0,1

0,1

0,1

10

10

10

10

10

10

10

Y3

Y4

Y1

Y2

Y3

Y4

Y1

Y1 = [ 1,5 1.0 0.2 0.1 0.8 0.5 0.3 0.1 0.2 -0.4 ];

Y2 = [ -1.1 0.2 0.4 0.1 0.9 0.6 0.2 0.3 0.3 -0.5 ];

Y3 = [ -0.6 0.1 0.1 0.4 1.0 0.5 0.1 0.8 0.2 -1.1 ];

Y4 = [ -11 2 1 10 8.5 2 4 1 1 -6 ];

4 . Выполнить интерполяцию данных результатов измерений приведенных в таблице 2.1, приняв шаг интерполяции 0,01 и увеличив начальное и конечное значение Х на 0,01.

4.1 Интерполяцию выполнить функциями:

Yi = spline( x, y, xi )

Yi = interp1( x, y, xi, ’метод’ )

Для всех методов интерполяции:

Ступенчатый ‘nearest’

Линейный ‘linear’

Кубический ‘cubic’

Сплайновый ‘spline’

    1. Результаты интерполяции представить в виде графиков.

Контрольные вопросы.

  1. Что такое аппроксимация результатов эксперимента? С помощью какой команды она реализуется в MATLAB?

  2. Что такое интерполяция данных? С помощью какой команды она реализуется в MATLAB?

  3. Перечислите методы аппроксимирующих полиномов? Какой из них дает наименьшую погрешность?

  4. Перечислите методы интерполяции? Какой из них дает наименьшую погрешность?

  5. Почему при аппроксимации число аргументов Х и число отсчетов функции У должно быть одинаковым? Что произойдет в случае невыполнения этого условия?

  6. Что такое свертка векторов? С помощью какой операции она реализуется?

  7. Объясните назначение функции plot и продемонстрируйте варианты ее использования на конкретных примерах.

  8. Объясните назначение и приведите примеры использования функции hist.

  9. Объясните как осуществляется титульная и осевые надписи на графиках. Какие при этом используются команды? Продемонстрируйте соответствующими примерами.

  10. Объясните и продемонстрируйте на примере ввод текста в любом месте графика.

  11. Объясните и продемонстрируйте как осуществляется масштабирование осей графика.

  12. Объясните и продемонстрируйте действие команды grid.

  13. Объясните и продемонстрируйте как осуществляется разбиение графического окна.

  14. Объясните назначение и продемонстрируйте действие команды zoom.

  15. Объясните и продемонстрируйте действие команды stem.

Содержание отчета.

  1. Титульный лист (образец тит. листа приведен в приложении А );

  2. Вариант индивидуального задания;

  3. Результаты выполнения индивидуального задания с комментариями и выводами;

  4. Письменный ответ на контрольные вопросы.

Литература.

  1. Сергиенко А.Б. Цифровая обработка сигналов.-С-Пб.:Питер,2005-604с.; 542-555с.(графики), 564-565с.(polyfun);

  2. Дьяконов В. MATLAB. Обработка сигналов и изображений. Специальный справочник.-С-Пб.:Питер,2002-Графики системы MATLAB (86-89c.), специальные средства графики (89-98с.);

  3. Лазарев Ю. Моделирование процессов и систем в MATLAB. Учебный курс-С-Пб.:Питер:Киев:Издательская группа BHV,2005-512с.,с43-49, с58-61, с.66-74, с.100-106.

Особенности графического отображения результатов.

Построение графиков в MATLAB.

Для отображения функций у(х) используются графики в декартовой (прямоугольной) системе координат. При этом обычно строятся две оси — горизонтальная X и вертикальная У, и задаются координаты x и у, определяющие узловые точки функции у(х). Эти точки соединяются друг с другом отрезками прямых, т. е. при построении графика осуществляется линейная интерполяция для промежуточных точек. Поскольку МАТLАВ — матричная система, совокупность точек у(х) задается векторами X и У одинакового размера.

Команда р1оt служит для построения графиков функций в декартовой

системе координат. Эта команда имеет ряд параметров, рассматриваемых ниже.

- рlоt (X, У) — строит график функции у(х), координаты точек (х, у) которой берутся из векторов одинакового размера У и X. Если X или У — матрица, то строится семейство графиков по данным, содержащимся в колонках матрицы.

Приведенный ниже пример иллюстрирует построение графиков двух функций — sin(х) и соs(х), значения функции которых содержатся в матрице У, а значения аргумента х хранятся в векторе X:

»х=[0 1 23 45];

» У=[sin(х);соs(х)]; // ; новая строка в массиве

>>piot(x, Y)

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

- рlоt(У) — строит график у(i), где значения у берутся из вектора У, а i представляет собой индекс соответствующего элемента. Если У содержит комплексные элементы, то выполняется команда рlot (геа1 (У). imag(У)). Во всех других случаях мнимая часть данных игнорируется.

- р1о1(ХэУ,S) — аналогична команде рlоt(Х.У), но тип линии графика можно задавать с помощью строковой константы S.

Значениями константы S могут быть следующие символы.

Цвет линии

У

Желтый

М

Фиолетовый

C

Голубой

R

Красный

G

Зеленый

B

Синий

W

Белый

к

Черный

Тип точки

.

Точка

0

Окружность

X

Крест

+

Плюс

*

Звездочка

S

Квадрат

D

Ромб

V

Треугольник

(вниз)

A

Треугольник

(вверх)

<

Треугольник

(влево)

>

Треугольник

(вправо)

P

Пятиугольник

H

Шестиугольник

Тип линии:

- Сплошная -.- Штрих-пунктир --- Штриховая ::: Двойной пунктир

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

- plot (XI VI, S1; Х2, У2; S2, Х3, УЗ, S3,...) — эта команда строит на одном графике ряд линий, представленных данными вида (Х..У..S.), где X. и У. — векторы или матрицы, а S —- строки.

При отсутствии указания на цвет линий и точек он выбирается автоматически из таблицы цветов (белый исключается). Если линий больше шести, то выбор цветов повторяется. Для монохромных систем линии выделяются стилем.

Построение гистограмм

Классическая гистограмма характеризует числа попаданий значений элементов вектора У в М интервалов с представлением этих чисел в виде столбцовой диаграммы. Для получения данных для гистограммы служит функция HIST, записываемая в следующем виде:

- H = hist(У) — возвращает вектор чисел попаданий для 10 интервалов, выбираемых автоматически. Если У — матрица, то выдается массив данных о числе попаданий для каждого из ее столбцов;

- H = hist (Y, M) — аналогична вышерассмотренной, но используется М интервалов (М — скаляр);

- H = hist(Y, X) - возвращает числа попаданий элементов вектора У в

интервалы, центры которых заданы элементами вектора X;

- [N,X]=HIST(…) — возвращает числа попаданий в интервалы и данные о центрах интервалов.

Команда hist(...) с синтаксисом, аналогичным приведенному выше, строит график гистограммы. В следующем примере строится гистограмма для 1000 случайных чисел и выводится вектор с данными о числах их попаданий в интервалы, заданные вектором х:

» х=-3:0.2:3; »у=randn( 1000.1);

>>hist(y, x)

>>h=hist(y, x)

Нетрудно заметить, что распределение случайных чисел близко к нормальному закону. Увеличив их количество, можно наблюдать еще большее соответствие этому закону.

График дискретных отсчетов функции

Еще один вид графика функции у(х) — ее представление дискретными отсчетами. Этот вид графика применяется, например, при описании квантования сигналов. Каждый отсчет представляется вертикальной чертой, увенчанной кружком, причем высота черты соответствует у-координате точки.

Для построения графика подобного вида используются команды Stem(...):

  • Stem(XY) — строит график отсчетов с ординатами в векторе Y и абсциссами в векторе X;

  • stem(.... ‘LINESPEC’) — дает построения аналогичные ранее приведенным командам, но со спецификацией линий ‘LINESPEC’ подобной спецификации, приведенной для функции рlоt;

  • stem(У) — строит график функции с ординатами в векторе У в виде отсчетов:

• stem(.... ‘filled’) — строит график функции с закрашенными маркерами. Следующий пример иллюстрирует применение команды stem:

»х = 0:0.1:4;

>>y=sin(x.^2).*exp(-x):

>>stem(x, y)

Построение графиков поверхностей

Команда рlоt(...) является аналогом команды рlоt (...), но относится к функции двух переменных z(х,у). Она строит аксонометрическое изображение трехмерных поверхностей и представлена следующими формами:

  • р1оt(х,у,z) — строит массив точек, представленных векторами х, у и z, соединяя их отрезками прямых. Эта команда имеет ограниченное применение;

  • рlot(Х,У,Z), где X, Y и Z, — три матрицы одинакового размера, строит точки с координатами Х(i,:), У(i,:) и Z(i,:) и соединяет их отрезками прямых.

  • рlоt (X, У, Z, S) — обеспечивает построения, аналогичные рассмотренным ранее, но со спецификацией стиля линий и точек, соответствующей спецификации команды рlоt. Ниже дан пример применения этой команды для построения поверхности кружками:

Установка титульной надписи

После того как график уже построен, МАТLАВ позволяет выполнить его форматирование или оформление в нужном виде Соответствующие этому средства описаны ниже. Так, для установки над графиком титульной надписи используется следующая команда:

• title( ‘string’)— установка на двумерных и трехмерных графиках

титульной надписи, заданной строковой константой ‘string’ .

Пример применения этой команды будет дан в следующем разделе

Установка осевых надписей

Для установки надписей возле осей х, у и z используются следующие команды:

Xlabel (‘String’)

Ylabel (‘String’)

Zlabel (‘String’)

Соответствующая надпись задается символьной константой или переменной

‘String’.

Ввод текста в любое место графика

Часто возникает необходимость добавления текста в определенное место графика, например для обозначения той или иной кривой графика. Для этого

используется команда tехt:

-text(X, Y, ‘string’)— добавляет в двумерный график текст, заданный строковой константой ‘string’, так что начало текста расположено в точке с координатами (X, У), Если X и У заданы как одномерные массивы, то надпись помещается во все позиции [х(i) ,у(i)];

Соседние файлы в папке КСД-12 ОСИ