Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Основы работы с системой MatLab.doc
Скачиваний:
19
Добавлен:
06.03.2016
Размер:
155.65 Кб
Скачать

4 Операции над векторами Векторные действия над векторами

Сложение векторов – производится с векторами, имеющими одинаковую длину.

Z1 = X+Y

Z2 = X-Y

Транспонирование вектора – с помощью знака «апостроф»:

X’

Умножение вектора на число

Z = r*X=X*r

Умножение двух векторов – когда векторы одинаковой длины и один из векторов является строкой, а другой –столбцом:

U = X’ * Y, V = X * Y’

Для трехкомпонентных векторов существует функция cross

Cross (V1,V2)

Действия по поэлементному преобразованию

Все операции осуществляются только с векторами одного типа и размера. Результатом является вектор того же типа и размера.

1. добавление (вычитание) числа к каждому элементу вектора: (+), (-)

  1. поэлементное умножение векторов производится при помощи совокупности знаков (.*)

  2. поэлементное деление векторов – с помощью знака (./)

  3. поэлементное деление векторов в обратном направлении (.\)

  4. поэлементное возведение в степень – (.^)

  5. все элементарные математические функции, которые зависят только от одного аргумента преобразуют все элементы вектора как элементы обычного одномерного массива(например sin(V) приводит к формированию вектора V1, элементы которого равны синусу соответствующего аргумента вектораV)

Поэлементное преобразование матриц и матричные действия с матрицами идентичны векторным действиям. Max(V) – выдает максимальное значение элемента вектора

Min(V) – выдает минимальное значение элемента вектора

Mean(V) определяет среднее значение вектора

Std(V) - определяет среднеквадратичное отклонение от среднего значения

Sort(V) - формирует вектор, элементы которого распределены в порядке возрастания их значений

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

Prod(V) – выдает произведение всех элементов вектора

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

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

Полином, как функция определяется выражением

в MatLab полином задается и храниться в виде вектора, элементами которого являются коэффициенты полинома от

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

5.1 Умножение полиномов

Произведением двух полиномов степеней n и m называют полином степени n+m коэффициенты которого определяются простым перемножением этих двух полиномов. Операция перемножения векторов называется сверткой векторов и осуществляет ее функция

Conv(P1,P2)умножение векторов

Deconv(P1,P2) – деление полинома Р1 на Р2 В общем случае деление двух полиномов приводит к появлению двух полиномов: полинома – результата и полинома – остатка. Чтобы получить оба эти полинома необходимо следующее

[Q,R]=deconv(B,A)

тогда результат будет выдан в виде вектора Q с остатком в виде вектора R таких, что будет выполнено соотношение

B = conv(A,Q) + R

Roots(P) вычисляет вектор, элементы которого являются корнями полинома Р.

P = poly(r) построение вектора р по заданному вектору его корней. r – заданный вектор значений корней, р - вычисленный вектор полинома

Polyval(p,x) – вычисляет значение полинома по заданному значению его аргумента р – заданный вектор коэффициентов полинома, х – заданное значение аргумента.

Polider(p) = dp- вычисление производной от полинома.

6 Векторная фильтрация и спектральный анализ.

В системе MatLab есть несколько функций для проведения цифрового анализа данных измерений.

Функция y=filter(b,a,x) обеспечивает формирование векторов у по данным векторам b,а,х. В соответствии с соотношением

(1)

где вектор b имеет такой состав

b=[b(1),b(2),…,b(nb+1)]

а вектор а:

a=[1,a(2),a(3),…a(na+1)]

Уравнение (1) можно рассматривать как уравнение фильтра с дискретной передаточной функцией вида рациональной дроби, коэффициенты числителя которой образуют вектор b, а знаменателя - вектор а, на вход которого подается сигнал х(t), а на выходе формируется сигнал y(t)

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

7.1. Процедура plot

Основной функцией, обеспечивающей построение графиков на экране дисплея, является функция Plot. Общая форма обращения к этой процедуре такова:

Plot (x1,y1,s1,x2,y2,s2,…)

Здесь x1,y1 – Заданные векторы, элементами которых являются массивы значений аргумента (x1) и функции (y1), соответствующих первой кривой графиков; x2,y2 – Массивы значений аргумента и функции второй кривой и.т.д. При этом предполагается, что значения аргумента откладываются вдоль горизонтальной оси графика, а значения функции – вдоль вертикальной оси. Переменные s1,s2,… являются символьными (их указания не обязательно). Каждая из них может содержать три специальных символа, которые определяют тип линии, соединяющей отдельные точки графика, тип точки графика и цвет линии. Если переменные s не указаны, то тип линии по умолчанию – отрезок прямой, тип точки – пиксель, а цвет устанавливается в таком порядке: синий, зеленый, красный, голубой, фиолетовый, желтый, черный и белый, - в зависимости от того, какая по очереди линия отображается на графике. Например, обращение вида plot (x1,y1,x2,y2,…) Приведет к построению графика, в котором первая кривая будет линией из отрезков прямых синего цвета, вторая кривая – такого же типа зеленой линией и.т.д.

Графики в MatLAB всегда выводятся в отдельном (графическом ) окне, которое называют фигурой.

Пусть требуется вывести график функции y=3sin(x+π/3) на промежутке от -3 π до +3 π с шагом π / 100.

Сначала надо сформировать массив значений аргумента x :

X= -3*pi : 3*pi

Затем вычислить массив соответствующих значений функций:

Y= 3*sin (x+pi /3)

И, наконец, построить график зависимости y(x).

В целом, в командном окне эта последовательность операций будет выглядеть так:

X=-3*pi: pi/100: 3*pi;

Y=3*sin(x+pi/3);

Plot(x,y)

В результате на экране появится дополнительное окно с графиком.

Графики имеют несколько недостатков:

- на них не нанесена сетка из координатных линий, что затрудняет «чтение» графиков;

- нет общей информации о кривых графика (заголовка);

- неизвестно, какие величины отложены по осям графика.

Первый недостаток устраняется с помощью функции grid. Если эту функцию записать сразу после обращения к функции plot.

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

Заголовок графика выводится с помощью процедуры title. Если после обращения к процедуре plot вызвать title таким образом:

Title (‘<текст>’)

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

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

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

выбрать диапазон изменения параметра t от 0 до 50 с шагом 0,1 и построить график.

7.2 Специальные графики.

Большим удобством, предоставляемым системой MatLAB, является возможность не указывать аргумент функции при построении ее графиков. В этом случае в качестве аргумента система принимает номер элемента вектора, график которого строиться.

Пользуясь этим можно построить график любого вектора.

Более наглядным является представление вектора в виде столбчатой диаграммы с помощью функции bar.

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

Еще одна полезная инженеру функция – hist (построение графика гистограммы заданного вектора). Стандартное обращение к ней имеет вид:

Hist (y,x)

Где y – вектор, гистограмму которого нужно построить; x – это вектор, определяющий интервалы изменение первого вектора, внутри которого подсчитывается число элементов вектора y. Эта функция производит две операции.

- подсчитывает число элементов вектора y, значение которых попадают внутрь диапазона, указанного вектором x ;

- строит столбчатую диаграмму подсчитанных чисел элементов вектора y как функцию указанных вектором x диапазонов. В качестве примера рассмотрим построение гистограммы, случайных величин, которые формируются встроенной функции randn.

Возьмем общее число элементов вектора случайных величин 10000. Построим гистограмму для диапазона изменения этих величин от –3 до+3 с шагом 0.1.

Тогда график функции можно построить:

X = -3:0.1:3

Y = randn(10000,1)

Hist(y,x)

Ylabel (‘число с 10000’)

Xlabel(‘аргумент’)

Title(‘гистограмма нормального распределения’)

Процедура comet (x,y) («комета») строит график зависимости y(x) постепенно во времени в виде траектории кометы (ставится в конце совокупности операторов). При этом изображающая точка на графике имеет вид маленькой кометы (с головкой и хвостиком), которая плавно перемещается от одной точки к другой. (Построить с помощью данной функции график представленных выше параметрических формул)

MatLAB имеет несколько функций, позволяющих строить графики в логарифмическом масштабе.

Функция logspase с обращением:

X=logspase (d1, d2, n)

формирует вектор-строку x, содержащую n равноотдаленных в логарифмическом масштабе друг от друга точек, которые покрывают диапазон от до.

Функция LogLog полностью аналогична функции plot, но графики по обеим осям строятся в логарифмическом масштабе. Для построения графиков, использующих логарифмический масштаб только по одной из координатных осей, пользуются процедурами similogx и semilogy. Первое процедура строит графики с логарифмическим масштабом вдоль горизонтальной оси, вторая – вдоль вертикальной оси. Обращение к последним трем процедурам полностью аналогична обращению к функции plot.

В качестве примера рассмотрим построение графиков амплитудно-частотной и фазо-частотной характеристик звена, описываемого передаточной функцией:

W(p)=

Для этого следует, во-первых, создать векторы-полиномы числителя Pc= [1 4] и знаменателя Pz = [1 4 100] передаточной функции.

Во-вторых, определить корни этих двух полиномов (сделать самостоятельно).

В-третьих, задать диапазон изменения частоты таковым, чтобы он охватывал все найденные корни.

Om0=1e-2; omk=1e2

Затем задать количество точек графика n = 41

И сформировать массив точек по частоте ОМ = logspase(-2,2,41), где значения –2 и 2 соответствуют десятичным порядкам начального (om0) и конечного (omk) значений частоты.

Пользуясь функцией polyval, можно вычислить сначала вектор ch комплексных значений числителя частотой передаточной функции, соответствующей заданной передаточной функции, если в качестве аргумента функции polyval использовать сформированный вектор частот ОМ, элементы которого умножены на мнимую единицу. Аналогично вычисляются комплекснозначный вектор zn знаменателя ЧПФ.

Вектор значений АЧХ (амплитудно-частотной характеристики) можно найти, вычисляя модули векторов числителя и знаменателя ЧПФ и деля поэлементно полученные векторы. Чтобы найти вектор значений ФЧХ (фазо-частотной характеристики) надо разделить поэлементно комплекснозначные векторы числителя и знаменателя ЧПФ и определить вектор аргументов элементов полученного вектора.

Чтобы фазы представить в градусах, полученные результаты следует умножить на 180 и разделить на π.

Для построения графика АЧХ в логорифмическом масштабе, достаточно применить функцию LogLog а для построения ФЧХ удобнее воспользоваться функцией semilogs.

Последовательность действий может быть такой:

ОМ = logspase(-2,2,41)

Ch = polyval (P1*i*OM);

Zn= polyval (P2*i*OM);

ACH=abs(ch)./abs(zn);

Loglog(OM,ACH);

Grid;

Title(‘график амплитудно-частотной характеристики’)

Xlabl(‘частота’)

Ylabl(‘отношение амплитуд’)

FCH = angle(ch./zn)*180/pi;

Semilogx(OM,FCH);

Grid,

Title(‘Фазо-частотная характеристика’),

Xlabl(‘частота’)

Ylabl(‘фаза(градусы)’)

7.3. Дополнительные функции графического окна

Обычно графики, получаемые с помощью процедур plot, loglog, semilogx, semilogy, автоматически строятся в таких масштабах, чтобы в поле графика поместились все вычисленные точки, включая максимальные и минимальные значения аргумента и функции. Но MatLAB не имеет возможности определения и других режимов масштабирования. Это достигается за счет использования процедуры axis.

Команда axis ([xmin xmax ymin ymax]) устанавливает жесткие границы поля графика в единицах величин, откладываемых по осям.

Команда axis(‘auto’) возвращает масштабы по осям к их штатным значениям (принятым по умолчанию).

Команда axis(‘ij’) перемещает начало отсчета в левый верхний угол и реализует отсчет от верхнего левого угла (матричная система координат).

Команда axis(‘xy’) возвращает декартову систему координат с началом отсчета в левом нижнем углу.

Команда axis(‘sqare’) устанавливает одинаковый диапазон изменения переменных по осям графика.

Команда axis(‘equal’) обеспечивает одинаковый масштаб по обеим осям графика.

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

Обращение к этой процедуре должно предшествовать обращению к процедурам plot, loglog, semilogx и semilogy и выглядеть так:

Subplot (m, n, p)

Здесь м указывает, на сколько частей делится графическое окно по вертикали, n – по горизонтали, а p – является номером подокна, в котором будет строиться график. Подокна нумеруются слева направо, сверху вниз (так, как читается текст книги).

Команда text (x,y , ‘<текст>’) позволяет разместить указанный текст в поле графика, при этом начало текста помещается в точку с координатами x и y. Значения указанных координат должны быть представлены в единицах величин, откладываемых по оси графика, и находящихся внутри диапазона изменений этих величин, что неудобно.

Более удобно для размещения текста внутри поля графика является использование команды gtext (‘<текст>’) , с помощью которой в активном графическом окне высвечивается перекрестие. Перемещая перекрестие с помощью мыши, можно указать место начала вывода указанного текста. Нажатием левой кнопки мыши или любой клавиши текст вводится в указанное место.

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

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

Hold on

Тогда следующий график будет строиться в том же предварительно открытом графическом окне т.е. новая линия будет добавляться к ранее построенным. Команда hold off выключает режим сохранения графического окна, установленный предыдущей командой.

7.4. Вывод графиков на печать

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

Выберете из меню file команду print. Подготовьте принтер к печати, нажмите кнопку OK в диалоговом окне, и принтер распечатает содержимое графического окна на отдельном листе бумаги. Для настройки принтера используйте команду print setup из меню file.

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

Включите компьютер, загрузите MatLab.

  1. Произвести простые арифметические действия (умножение, деление, возведение в степень и так далее) с числами различной величины и форматом представления чисел. Определить разницу в формате представления чисел (например, 4.9864512·10-5*458.569·107). изучить вывод промежуточной информации в командном окне, согласно вышеприведенным правилам.

  2. Произвести операции с комплексными числами. Использовать функцию disp для вывода в командное окно результатов вычислений (disp(x+y). Ознакомиться с действием функции cplxpair(V).

  3. Изучить применение элементарных математических функция и специальных математических функций.

  4. Сформируйте матрицу размером 6х5 и проведите с ней операции, согласно п.3.2

  5. Сформируйте два вектора по 3 элемента и проведите с ними операции, согласно п.4

  6. Составьте полином пятой степени и проведите с ним все операции, согласно п.5

  7. Постройте график функции y = 5cos(x + /3) в промежутке от -3 до 3 с шагом /100 с помощью функции plot.

  8. Добавьте к полученному графику название графика, название осей и масштабную сетку.

  9. Постройте график функции, заданными вышеприведенными параметрическими формулами.

  10. Постройте «график вектора» х=[1 5 3 6 8 7 2]. Постройте его же в виде столбчатой диаграммы.

  11. Постройте график функции в виде столбчатой диаграммы с соответствующими комментариями.

  12. Постройте график гистограммы заданного вектора с помощью функции hist.

  13. Постройте график выше приведенных параметрических функций с помощью процедуры comet(x,y)

  14. Постройте графики АЧХ и Фазо – частотные характеристики функции

15. Получите два графика АЧХ и Фаз.ЧХ в одном графическом окне, но на отдельных графических полях с помощью процедуры subplot(m,n,p).

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

  1. Режимы работы среды MatLab.

  2. Какие объекты позволяет создавать среда MatLab

  3. Какую функцию выполняет команда Run Script?

  4. Какую функцию выполняет команда Debug?

  5. Какие команды позволяют изменять свойства, определяющие оформление графических окон.

  6. Как редактировать М-файлы.

  7. Какие форматы чисел могут быть представлены при вычислениях.

  8. Какие функции среды MatLab рассчитаны только на комплексные числа. Что они означают.

  9. Как формируются векторы и матрицы.

  10. Как вычислить корни полинома.

  11. Как построить график в среде MatLab

  12. Какие дополнительные функции имеет графическое окно

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]