Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Назначение, принципы работы в Matlab

Поиск

ВВЕДЕНИЕ

 

 

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

 

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

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

ВЫЧИСЛЕНИЯ В MATLAB

 

Цель работы: научиться проводить вычисления в MatLab,

 

ТЕОРЕТИЧЕСКАЯ ЧАСТЬ

 

 

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

Работа с системой носит диалоговый характер (задал вопрос – получил ответ). Пользователь набирает на клавиатуре вычисляемое выражение, редактирует его (если нужно) в командной строке и завершает ввод нажатием клавиши ENTER. Результат присваивается параметру ans.

Основные арифметические операции выполняются с помощью традиционных знаков: «+», «-», «*», «/» (деление слева направо), «\»(деление справа налево), «^» (возведение в степень).

В качестве первого примера умножим два числа (рисунок 2.1).

 

 

Рисунок 2.1 – Умножение чисел

 

 

Теперь вычислим значение выражения 2(1 + cos π /3) и присвоим результат переменной с именем x (см. рисунок 2.2, с.12). Необходимо знать, что имя переменной в Matlab может быть составлено только из букв латинского алфавита, цифр и символа подчеркивания «_».  При этом большие и маленькие буквы различаются.

 

 

 

Рисунок 2.2 –Вычисление в командной строке

 

 

Для блокировки вывода результата вычислений некоторого выражения после него надо установить знак «;» (точка с запятой) (рисунок 2.3).

 

 

Рисунок 2.3 – Блокировка вывода результата вычислений с

использованием «;»

В некоторых случаях вводимое математическое выражение может оказаться настолько длинным, что для него не хватит одной строки, тогда часть выражения можно перенести на новую строку с помощью знака многоточия «...» (3 или более точек) (рисунок 2.4).

 

 

Рисунок 2.4 – Перенос строки в сессии

 

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

Следует также отметить, что в математических выражениях операторы имеют определенный приоритет исполнения. Например, в Matlab приоритет логических операторов выше, чем арифметических, приоритет возведения в степень выше приоритетов умножения и деления, а приоритет умножения и деления выше приоритета сложения и вычитания. Для изменения приоритета операций в математических выражениях используются круглые скобки (рисунок 2.5)

 

 

Рисунок 2.5 – Вычисление в командной строке

 

Число – простейший объект языка Matlab, представляющий количественные данные. Числа можно считать константами. Числа могут быть целыми, дробными, с фиксированной и плавающей точкой. Возможно представление чисел в хорошо известном научном формате с указанием мантиссы и порядка числа (см. рисунок 2.6, с.15).

 

Рисунок 2.6 – Формат представление чисел с указанием мантиссы и порядка числа

 

Нетрудно заметить, что в мантиссе чисел целая часть отделяется от дробной не запятой, а точкой, а для отделения порядка числа от мантиссы используется символ e. Знак «плюс» у чисел не проставляется, а знак «минус» у числа называют унарным минусом. Пробелы между символами в числах не допускаются.

Числа могут быть комплексными: z =Re(z)+Im(z)* i. Такие числа содержат действительную Re(z) и мнимую Im(z) части. Мнимая часть имеет множитель i или j, означающий корень квадратный из –1.

Задание формата сказывается только на форме выводачисел. Следует отметить, что результат выводится в формате, который определяется предварительно. Однако формат может быть установлен с помощью команды Preferences меню File (рисунок 2.7).

 

Рисунок 2.7 – Директории File меню системы Matlab 7.12.0

(R2011a) 

 

После ее вызова на экране появится одноименное окно (см. рисунок 2.8, с. 17). Один из участков этого окна имеет название Numeric Format. Он предназначен для установки и изменения формата представления чисел, которые выводятся в командное окно в процессе расчетов.

 

Рисунок 2.8 –Выбор в директории командного окна краткой записи чисел (short)

 

Если, например, после установки в Numeric format - «short», ввести в командном окне Matlab строку 1.3568777е -16, то после нажатия клавиши <Enter> в этом окне «появится запись (см. рисунок 2.9, c.18).

 

 

Рисунок 2.9 – Краткая запись числа

 

Предусмотрены также форматы:

    l ong - длинная запись;

    h ex - запись в виде шестнадцатеричного числа;

    b ank - запись до сотых долей;

    p lus (+) - записывается только знак числа;

    s hort e - краткая запись в формате с плавающей запятой;

    l ong e - длинная запись в формате с плавающей запятой;

    s hort g - вторая форма краткой записи в формате с плавающей запятой;

    l ong g - вторая форма длинной записи в формате с плавающей запятой;

    r ational - запись в виде рациональной дроби.

    В версии Matlab R2012b директория для выбора формата чисел Numeric Format также находится в С ommand Window Preferences, которая в свою очередь находится в главном меню Environment (см. рисунок 2.10, с.19).

Рисунок 2.10 – Директория Preferences главного меню Environment

 

Константа – это предварительно определенное числовое или символьное значение, представленное уникальным именем (идентификатором). Числа (например, 1, –3 и 1,24) являются безымянными числовыми константами.

Другие виды констант в Matlab - системные переменные. Они задаются системой при ее загрузке и  могут переопределяться. Основными системными переменными являются:

- i или j –мнимая единица (корень квадратный из –1);

- pi – число пи, равное 3,1415926…;

- eps – погрешность операций над числами с плавающей точкой;

- realmin – наименьшее число с плавающей точкой;

- realmax – наибольшее число с плавающей точкой;

- inf – значение машинной бесконечности;

- ans – переменная, хранящая результат последней операции и обычно вызывающая его отображение на экране дисплея;

- NaN – указание на нечисловой характер данных (Not_a_Number).

Символьная константа – это цепочка символов, заключенных в апострофы, например:

'Привет'

'2+7'

Если в апострофы помещено математическое выражение, то оно, как правило, не вычисляетсяи рассматривается просто как цепочка символов. Так что '2+7' не будет возвращать на экран число 9. Однако символьные выражения могут системой вычисляться с помощью специальных функций преобразования.

Поскольку Matlab используется для достаточно сложных вычислений, важное значение имеет наглядность их описания. Она достигается, в частности, с помощью текстовых комментариев. Текстовые комментарии в программахвводятся с помощью символа %, например:

>>% Это функция вычисления натурального логарифма

Переменные – это имеющие имена объекты, способные хранить некоторые данные. В зависимости от этих данных переменные могут быть числовыми или символьными, векторными или матричными.

На языке программирования Matlab можно задавать переменным определенные значения. Для этого используется операция присваивания, вводимая знаком равенства: Имя_переменной = Выражение

Имена переменных рекомендуется задавать только латинскими буквами, цифрами и различными символами (не допускается применение символов операторов, например «+», «-», «*», «/»).

Имя переменной должно начинаться с латинской буквы.

В памяти компьютера переменные занимают определенное место, называемое рабочей областью (Workspace). Для очистки рабочей области используется команда clear:

- clear – уничтожение определений всех переменных;

- clear x – уничтожение определения переменной x;

- clear x, y, z – уничтожение определений нескольких переменных.

Стертая переменная становится неопределенной (рисунок 2.11). Нельзя использовать неопределенные переменные, попытки использовать их будут сопровождаться выдачей системой Matlab сообщений об ошибке.

Рисунок 2.11 – Примеры уничтожения значений переменных

 

Неопределенные переменные используются при выполнении символьных вычислений.

Оператор – это специальное обозначение для определенной операции над данными – операндами. Например, простейшими арифметическими операторами являются знаки суммы «+», вычитания «-», умножения «*» и деления «/». Операторы используются совместно с операндами. Например, в выражении «2+3»,  знак «+» является оператором сложения, а числа 2 и 3 – операндами.

Полный список операторов можно получить, набрав в командном окне   >> help ops

Приведем некоторые арифметические операторы:

    Plus – плюс +

    Uplus – унарный плюс +

    Minus – минус –

    Uminus – унарный минус –

    Mtimes – умножение *

    times – поэлементное умножение.*

    mpower – возведение в степень ^

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

    mldivide – деление справа налево \

    mrdivide – деление слева направо /

    ldivide – поэлементное деление справа налево.\

    rdivide – поэлементное деление слева направо./

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

Функции в общем случае имеют список аргументов (параметров), заключенный в круглые скобки (например, sin(x)).

Со списком элементарных функций можно ознакомиться, выполнив команду help elfun, а со списком специальных функций – с помощью команды help specfun. Функции могут быть встроенными (внутренними) и внешними, или m_функциями. Так, встроенными являются наиболее распространенные элементарные функции, например sin(x) и exp(х), тогда как функция sinh(x) является внешней функцией. Внешние функции содержат свои определения в m_файлах.

Тригонометрические и гиперболические функции

    sin (Z) - синус числа Z;

    sinh (Z) - гиперболический синус;

    asin (Z) - арксинус (в радианах, в диапазоне от -π /2 к +π /2);

    asinh (Z) - обратный гиперболический синус;

    cos (Z) - косинус;

    cosh (Z) - гиперболический косинус;

    acos (Z) - арккосинус (в диапазоне от 0 к π);

    acosh (Z) - обратный гиперболический косинус;

    tan (Z) - тангенс;

    tanh (Z) - гиперболический тангенс;

    atan (Z) - арктангенс (в диапазоне от -π /2 к +π /2);

    atan2( X,Y) - четырехквадратный арктангенс (угол в диапазоне от -π до +π между горизонтальным правым лучом и лучом, который проходит через точку с координатами X и Y);

    atanh (Z) - обратный гиперболический тангенс;

    sec (Z) - секанс;

    sech (Z) - гиперболический секанс;

    asec (Z) - арксеканс;

    asech (Z) - обратный гиперболический секанс;

    csc (Z) - косеканс;

    csch (Z) - гиперболический косеканс;

    acsc (Z) - арккосеканс;

    acsch (Z) - обратный гиперболический косеканс;

    cot (Z) - котангенс;

    coth (Z) - гиперболический котангенс;

    acot (Z) - арккотангенс;

    acoth (Z) - обратный гиперболический котангенс.

 

При вычислении значений тригонометрических функций от аргумента, заданного в градусной мере к наименованию функции добавляется буква «d», к примеру для вычисления косинуса 51  необходимо в командной строке набрать с osd (51).

Экспоненциальные функции

    exp (Z) - экспонента числа Z;

    log (Z) - натуральный логарифм;

    log10 (Z) - десятичный логарифм;

    log 2(Z) – логарифм по основанию 2;

    sqrt (Z) - квадратный корень из числа Z;

    abs (Z) - модуль числа Z.

 

Целочисленные функции

    fix (Z) - округление к ближайшему целому в сторону нуля;

    floor (Z) - округление к ближайшему целому в сторону отрицательной бесконечности;

    ceil (Z) - округление к ближайшему целому в сторону положительной бесконечности;

    round (Z) - обычное округление числа Z к ближайшему целому;

    mod (X,Y) - целочисленное деление X на Y;

    rem (X,Y) - вычисление остатка от деления X на Y;

    sign (Z) - вычисление сигнум-функции числа Z (0 при Z=0, -1 при Z<0, 1 при  Z>0);

    factor(n) – возвращает вектор-строку, содержащую простые множители чис ла n (для массивов эта функция неприменима);

    gcd(A, В) – возвращает массив, содержащий наибольшие общие делители соответствующих целых чисел А и В.

 

Очень часто необходимо произвести формирование упорядоченных числовых последовательностей. Такие последовательности нужны, например, при построении графиков или при создании таблиц значений. Для этого в MATLAB используется оператор «:» (двоеточие) в виде:

Начальное_значение: Шаг: Конечное_значение

Применение этой конструкции резко уменьшает потребность в задании программных циклов.

Если Шаг не задан, то он принимает значение 1. Если конечное значение указано меньшим, чем начальное значение, и шаг не указан – выдается сообщение об ошибке. Примеры применения оператора даны ниже:

>> 1:5

ans = 1 2 3 4 5

 

>> i=0:2:10

i = 0 2 4 6 8 10

 

>> j=10:-2:2

j = 10 8 6 4 2

 

>> V=0:pi/2:2*pi;

>> V

V = 0 1.5708 3.1416 4.7124 6.2832

 

>> X=1:-.2:0

X = 1.0000 0.8000 0.6000 0.4000 0.2000 0

 

>> 4:2

ans =

Empty matrix: 1-by-0

ПОРЯДОК ВЫПОЛНЕНИЯ РАБОТЫ

Задание 1. Изучить правила вычисления в командной строке.

Задание 2. Вычислить значения выражений (при вычислении использовать краткую запись числа):

 

1. , если  a) а=1,5; b=0,8; =61 ; б) а=3*10-2; b=0,71; =

 

2. , если а) а=5,08; 250 ; б) а=ln 1,37;

 

 

3. 3() , если а) р=ln3, q=lg3; б) р=0,013, q=l,4*102

ТРЕБОВАНИЯ К ОТЧЕТУ

 

Отчет должен быть оформлен согласно ГОСТ 7.32-2001 и содержать 1.Титульный лист

2. Цель работы

3. Краткие теоретические сведения

4. Результаты выполнения заданий.

5. Выводы по работе.

 

КОНТРОЛЬНЫЕ ВОПРОСЫ

 

1. Какие форматы чисел предусмотрены в системе?

2. Какие встроенные функции вы знаете?

 

 


 

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

РАБОТА С МАССИВАМИ

 

    Цель работы: научиться работать с массивами, векторами и

матрицами MatLab.

 

ТЕОРЕТИЧЕСКАЯ ЧАСТЬ

 

Matlab предназначен для проведения сложных вычислений с векторами, матрицами и массивами, при этом система по умолчанию предполагает, что каждая заданная переменная – это вектор, матрица или массив. Например, если задано X=1, то это значит, что X – это вектор с единственным элементом, имеющим значение 1, а точнее даже матрица с размером 1×1. Если надо задать вектор из трех элементов, то их значения следует перечислить в квадратных скобках, разделяя пробелами или запятыми. Так, например, присваивание >> V=[1 2 3] задает вектор V, имеющий три элемента со значениями 1, 2 и 3 (его можно считать и матрицей размера 3×1). Заметим, для вектора столбца нужно разделять элементы знаками «;» (точка с запятой) (рисунок 3.1).

 

Рисунок 3.1 – Задание вектора-строки и вектора - столбца

Для удобства длинный вектор можно вводить частями, которые потом объединять с помощью операции объединения векторов в строку:

р = [ р1 р2 ].

Для задания матрицы требуется разграничить строки матрицы знаком «;».  Этот же знак в конце ввода предотвращает вывод матрицы или вектора (и вообще любой операции) на экран дисплея. Ранее заданную матрицу можно вывести на экран с помощью ввода >> M (рисунок 3.2).

 

Рисунок 3.2 – Задание матрицы и вывод на экран дисплея

 

Возможен ввод элементов матриц и векторов в виде арифметических выражений, содержащих любые доступные системе функции (см. рисунок 3.3, с.28).

 

Рисунок 3.3 – Ввод вектора (матрицы) в виде арифметических выражений

 

   Для указания отдельного элемента вектора или матрицы используются выражения вида V(i) или M(i,j). Например, если задать матрицу

>> M=[1 2 3; 4 5 6; 7 8 9] и вывести на экран элемент матрицы под номером М13, то в командной строке необходимо набрать >> M(1,3). Результатом вывода будет число 3. Если нужно присвоить элементу M(i,j) новое значение x, следует использовать выражение M(i,j)=x.

 Например, если элементу M(1,3) необходимо присвоить другое значение, к примеру, 100, следует в командной строке записать >> M(1, 3)=100 (см. рисунок 3.4, с.29).

 Выражение M(i) с одним индексом дает доступ к элементам матрицы, развернутым в один столбец. Такая матрица образуется из исходной, если подряд выписать ее столбцы.

 

Рисунок 3.4 – Присваивание элементу матрицы иного значения

 

Возможно задание векторов и матриц с комплексными элементами вида a +i*b, где i – квадратный корень из -1 (см. рисунок 3.5, с.30).

Если мнимая единица i в системе Мatlab еще не определена, то предварительно необходимо набирать команду присвоения >> i=sqrt(-1).

Рисунок 3.5 - Задание векторов и матриц с комплексными элементами

 

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

Рассмотрим эти операции на примерах.

Пусть дана матрица А.

>> A = [ 1 2 3 4; 5 6 7 8; 9 10 11 12]

A =

1 2 3 4

5 6 7 8

9 10 11 12

 

Пусть нужно создать вектор P, состоящий из элементов третьего столбца матрицы А. Для этого в командной строке необходимо набрать:

 

>> P = A(:, 3)

P =

3.0000

7.0000

11. 0000

 

Чтобы создать вектор T, состоящий из элементов второй строки матрицы А, поступают так:

 

>> T = A(2,:)

T = 5. 0000  6. 0000  7. 0000  8. 0000

 

При необходимости из матрицы А сформировать матрицу D размером (2x3), которая состоит из элементов 1-й и 2-й строк 2-го, 3-го, 4-го столбца матрицы А, использую следующие операторы (рисунок 3.6).

 

 

Рисунок 3.6 – Создание меньшей матрицы из большей матрицы

 

Аналогично можно вставить матрицу D в 1-ю и 2-ю строки 1-го, 2-го, 3-го столбца матрицы А (см. рисунок 3.7, с.32).

 

 

Рисунок 3.7 – Вставка матрицы в другую матрицу

 

Если предельной границей изменения номеров элементов матрицы является ее размер в этом измерении, вместо него можно использовать слово end (рисунок 3.8).

Рисунок 3.8 – Извлечение частей матрицы с использованием «end»

«Растянуть» матрицу (А) в единый вектор (V) можно с помощью знака (:), например:

>> A = [1 2 3; 4 0 7]

A =

1 2 3

4 5 6

>> V = A(:)

V =

1

4

2

0

3

7

Описанный ниже способ задания матриц позволяет выполнить операцию конкатенации – объединения малых матриц в большую матрицу. Например, создадим вначале магическую матрицу (сумма столбцов и строк в магической матрице должны быть одинаковой, одинаковой также является и сумма элементов по основным диагоналям (главной диагонали и главной антидиагонали))  размера 3×3:

>> A=magic(3)

A = 8 1 6

     3 5 7

     4 9 2

  Теперь можно построить матрицу, содержащую четыре матрицы:

>> B=[A A+16; A+32 A+16]

B =

  8  1 6 24 17  22

  3  5 7 19 21  23

  4  9 2 20 25  18

  40 33 38 24 17  22

  35 37 39 19 21  23

  36 41 34 20 25  18

 

  Полученная матрица имеет уже размер 6×6. Вычислим сумму ее столбцов:

>> sum(B)

 ans = 126   126     126    126    126   126

 

  Как видно, она одинакова для всех столбцов. А для вычисления суммы строк используем команду >>sum(B.'):

 

>> sum(B.')

ans = 78       78       78      174     174      174

 

Здесь запись B.' означает транспонирование матрицы B, то есть замену строк столбцами. На этот раз сумма оказалась разной. Матрица B не является магической.

Если заданы несколько матриц А1, А2,... АN с одинаковым количеством строк, то из них можно «слепить» единую матрицу А, объединяя блоки в одну «строку» таким образом: A = [A1, A2,..., AN]. Эту операцию называют горизонтальной конкатенацией (сцеплением) матриц.

Вертикальная конкатенация матриц реализуется (при условии, что все составные блоки-матрицы имеют одинаковое количество столбцов) аналогично, путем применения вместо запятой знака точка с запятой:

A = [A1; A2;...; AN].

Приведем примеры. Пример горизонтальной конкатенации:

 

>> A1 = [1 2 3; 4 5 6; 7 8 9];

>> A2 = [10;11;12];

>> A3 = [14 15; 16 17; 18 19];

>> A = [A1, A2, A3]

A =

1 2 3 10 14 15

4 5 6 11 16 17

7 8 9 12 18 19

Пример вертикальной конкатенации:

 

>> B1 = [1 2 3 4 5];

>> B2 = [6 7 8 9 10; 11 12 13 14 15];

>> B3 = [17 18 19 20 21];

>> B = [B1; B2; B3]

B =

1 2 3 4 5

6 7 8 9 10

11 12 13 14 15

17 18 19 20 21

 

   Для формирования матриц и выполнения ряда матричных операций возникает необходимость удаления отдельных столбцов и строк матрицы. Для этого используются пустые квадратные скобки – [ ]. Проделаем это с матрицей R (рисунок 3.9).

 

Рисунок 3.9 – Удаление строк и столбцов матрицы

ПОРЯДОК ВЫПОЛНЕНИЯ РАБОТЫ

Задание 1.  Задайте матрицу А=  , выведите на экран элемент А23 и присвойте ему значение 5. Задайте вектор К из пятой строки матрицы А, и задайте вектор Д из второго столбца матрицы А.

Задание 2. Создайте матрицу размером М размером (3х2) элементы которой состоят из 3-5 строк и 2-3 столбца матрицы А. Вставьте полученную матрицу в 1-3 строки 1-2 столбца матрицы А.

Задание 3. Постройте матрицу С (М М+3; М+2 М+4) и вычислите сумму ее столбцов.

Задание 4. Приведите свои примеры горизонтальной и вертикальной конкатенации матриц.

Задание 5. Выведите на экран матрицу А. Удалите вторую строку и третий столбец.

ТРЕБОВАНИЯ К ОТЧЕТУ

 

Отчет должен быть оформлен согласно ГОСТ 7.32-2001 и содержать 1.Титульный лист

2. Цель работы

3. Краткие теоретические сведения

4. Результаты выполнения заданий.

5. Выводы по работе.

 

КОНТРОЛЬНЫЕ ВОПРОСЫ

 

1. Как задать матрицу?

2. Объясните, что такое горизонтальная и вертикальная конкатенация матриц?

 

 

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

РАБОТА С МАССИВАМИ

 

    Цель работы: научиться работать с массивами, векторами и

матрицами MatLab.

 

ТЕОРЕТИЧЕСКАЯ ЧАСТЬ

 

Matlab имеет несколько функций, которые позволяют формировать векторы и матрицы некоторого определенного вида. К таким функциям относятся:

zeros (n) - создает матрицу размером (nхn) с нулевыми элементами, например:

>> zeros(3)

ans =

0 0 0

0 0 0

0 0 0

 

zeros (m,n) - создает матрицу размером (mхn) с нулевыми элементами, например:

>> zeros(3,5)

ans =

0 0 0 0 0

0 0 0 0 0

0 0 0 0 0

 

Для создания единичной матрицы (она обычно обозначается как Е) служит функция eye:

еуе(n) – возвращает матрицу размера nxn с единицами по диагонали;

eye(m,n) или еуе([m n]) – возвращают матрицу размера mxn с единицами по диагонали и нулями в остальных ячейках (см.рисунок 4.1, с.38).

Рисунок 4.1 - Матрица размера 2x3

 

eye(size(A)) – определяет единичную матрицу того же размера, что А.

Для создания матриц, все элементы которых – единицы, используется команда ones:

ones(n) – определяет матрицу размера nхn;

ones(m,n) или ones([m n]) – определяет матрицу размера mxn, например:

>> ones(3,5)

ans =

1 1 1 1 1

1 1 1 1 1

1 1 1 1 1

 

ones (d 1, d 2, d 3….) или ones([d1 d2 d3…]) – определяет массив из единиц с размером d1xd2xd3x…;

ones(size(A)) – определяет массив единиц той же размерности и размера, что и А. Матрица с единичными элементами в отличие от единичной матрицы в MATLAB определена и для многомерных массивов;

Функция rand генерирует массивы случайных чисел, значения элементов которых равномерно распределены в промежутке (0, 1) (рисунок 4.2).

Рисунок 4.2 – Определение матрицы с помощью команды rand(n)

rand(n) – определяет матрицу размера nхn;

rand(m,n) или rand([m п]) – определяет матрицу размера mxn;

rand(m,n,p….) или rand([m n р…]) – определяет многомерный массив;

rand(size(A)) – возвращает массив того же размера и размерности, что и А, с элементами, распределенными по равномерному закону;

Проверить равномерность распределения случайных чисел можно, построив большое число точек на плоскости со случайными координатами (см. рисунок 4.3, с.40).

 

Рисунок 4.3 - Равномерность распределения случайных чисел

 

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

randn (m,n) - создает матрицу размером (mxn) из случайных чисел, распределенных по нормальному (гауссовому) закону с нулевым математическим ожиданием и стандартным (среднеквадратичным) отклонением, равным единице (см. рисунок 4.4, с.41).

 

 

Рисунок 4.4 – Матрица размера 2х4 из случайных чисел

 

 

Векторы, значения элементов которых являются случайными равномерно распределенными числами, определяется с помощью команд: rand (1,n) - для вектора-строки и rand (m,1) - для вектора-столбца.

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

rand(' state') – создает вектор с 35 элементами, содержащий текущее состояние генератора случайных чисел с равномерным распределением;

hadamard (n) - формирует матрицу Адамара размером (nхn) (см. рисунок 4.5, с.42);

hilb (n) - формирует матрицу Гильберта размером (nхn);

invhilb (n) - создает обратную матрицу Гильберта размером (nхn);

 

 

Рисунок 4.5 – Формирование матрицы Адамара

 

pascal (n) - создает матрицу Паскаля размером (nхn) (рисунок 4.6).

 

Рисунок 4.6 – Формирование матрицы Паскаля

 

В языке Matlab предусмотрено несколько функций, которые позволяют формировать матрицу на основе другой (заданной). К таким функциям принадлежат:

fliplr (A) - формирует матрицу, переставляя столбцы заданной матрицы А относительно вертикальной оси;

flipud (A) – формирует матрицу, переставляя строки заданной матрицы А относительно горизонтальной оси;

rot90 (A) - формирует матрицу путем «поворота» заданной матрицы А на 90 градусов против часовой стрелки;

reshape (A,m,n) - создает матрицу размером (mхn) путем выборки элементов заданной матрицы А по столбцам и последующему распределению этих элементов по «n» столбцам, каждый из которых содержит «m» элементов; при этом число элементов матрицы А должно равняться mхn (см. рисунок 4.7, с.44).

tril (A) - образует нижнюю треугольную матрицу на основе матрицы А путем обнуления ее элементов выше главной диагонали;

triu (A) - образует верхнюю треугольную матрицу на основе матрицы А путем обнуления ее элементов ниже главной диагонали;

 

 

Рисунок 4.7 – Использование команды reshape (A,m,n)

hankel (V) - образует квадратную матрицу Ганкеля, первый столбец которой совпадает с заданным вектором V, например:

 

>> V = [-5 6 7 4]

V = -5 6 7 4

>> hankel(V)

ans =

-5 6 7 4

 6 7 4 0

 7 4 0 0

 4 0 0 0

 

Процедура diag (х) - формирует или извлекает диагональ матрицы.

Если х - вектор, то функция diag (х) создает квадратную матрицу с вектором х по главной диагонали (см. рисунок 4.8, с.45).

>>diag(V)

ans =

-5 0 0 0

0 6 0 0

0 0 7 0

0 0 0 4

 

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

 

 

Рисунок 4.8 – Установка диагонали матрицы на другую диагональ

 

 

Конкатенацией – это  объединение массивов, которое реализует функция cat.

С = cat (dim, А, В) – объединяет массивы А и В в соответствии со спецификацией размерности dim и формирует объединенный массив, где

dim = 1 – горизонтальная конкатенация (рисунок 4.9),

dim = 2 – вертикальная конкатенация (см. рисунок 4.10, с.47),

dim = 3 – многомерный массив размерности 3 и т. д.

 

 

Рисунок 4.9 – Объединение матриц (горизонтальная конкатенация)

 

 

 

Рисунок 4.10- Объединение матриц (вертикальная конкатенация)

 

Функция zeros (1,n) формирует вектор-строку из n нулевых элементов, zeros (n,1) создает вектор-столбец из n нулей.

Функция linspace формирует линейный массив равноотстоящих узлов (чисел). Функция подобна действию оператора «:», но дает прямой контроль над числом узлов (чисел).

linspace(a,b) – создает линейный массив из 100 точек, равномерно распределенных в интервале от а и b;

linspace(a,b,n) – формирует n точек, равномерно распределенных в интервале от а до b (см. рисунок 4.11, с.48).

 

Рисунок 4.11 – Формирование 14 чисел, распределенных в диапазоне от 4 до 20

 

Функция logspace генерирует вектор равноотстоящих в логарифмическом масштабе точек. Она особенно эффективна при создании вектора частот. Это логарифмический эквивалент оператора «:» и функции linspace:

logspace(a,b) – формирует вектор-строку из 50 равноотстоящих в логарифмическом масштабе точек в интервале от 10^a и 10^b;

logspace(a,b,n) – формирует n точек между декадами 10^a и 10^b;

logspace(a,pi) – формирует 50 точек в интервале между 10^a и . Эта функция очень полезна в цифровой обработке сигналов.

Все аргументы функции logspace должны быть скалярными величинами.

ПОРЯДОК ВЫПОЛНЕНИЯ РАБОТЫ

Задание 1. Задайте матрицу А=  , выведите на экран элемент А23 и присвойте ему значение 5. Задайте вектор К из пятой строки матрицы А, и задайте вектор Д из второго столбца матрицы А.

Задание 2. Создайте матрицу размером (3х5) с нулевыми элементами.

    Задание 3. Создайте матрицу размером (5х5) с единицами по диагонали.

    Задание 4. Создайте матрицу размера (3х6) из массива случайных чисел в диапазоне (0,1). Постройте график распределения случайных чисел.

Задание 5. Создайте линейный массив из 100 точек, равномерно распределенных в интервале от (0;10). Сформируйте 50 точек, равномерно распределенных в интервале от (0;10).

 

ТРЕБОВАНИЯ К ОТЧЕТУ

 

Отчет должен быть оформлен согласно ГОСТ 7.32-2001 и содержать 1.Титульный лист

2. Цель работы

3. Краткие теоретические сведения

4. Результаты выполнения заданий.

5. Выводы по работе.

 

КОНТРОЛЬНЫЕ ВОПРОСЫ

 

1. Какие матрицы специального типа вы знаете?

2. Приведите примеры горизонтальной и вертикальной конкатенации матриц?

 

 

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

РАБОТА С ВЕКТОРАМИ

 

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

MatLab.

 

ТЕОРЕТИЧЕСКАЯ ЧАСТЬ

 

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

а) векторные действия, предусмотренные в математике;

б) действия по преобразованию элементов вектора - это действия, которые преобразуют элементы вектора, но не являются операциями, предусмотренными математикой.

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

Сложение векторов. Суммироваться могут только векторы одинакового типа (т. е. такие, которые являются или векторами-строками, или векторами-столбцами), имеющие одинаковое количество элементов. В этом случае сумму Z можно получить, введя команду Z = X + Y, например:

>> x = [1  2  3];

>> y = [4  5  6];

>> z = x + y

z = 5  7  9

 

C помощью арифметического знака «-» осуществляется вычитание векторов, имеющих одинаковую структуру. Например:

 

>> t = x - y

t = -3 -3 -3

Транспонирование вектора осуществляется применением знака апострофа, который записывается после имени вектора. Например:

 

>> x'

ans =

1

2

3

Умножение вектора на число осуществляется в Matlab с помощью знака арифметического умножения «*». Вычисление х*r или r*х, где r - некоторое действительное число, приведет к одному результату:

 

>> v = 2*x

v = 2 4 6

>>w = x*2

w = 2 4 6

 

Умножение двух векторов определено только для векторов одинакового размера и лишь тогда, когда один из векторов-множителей - строка, а второй – столбец (рисунок 5.1).

 

Рисунок 5.1 – Умножение векторов

 

Eсли же векторы х и y являются строками, то математический смысл имеют лишь две формы умножения этих векторов: z=x'*y и h=x*y'. При этом в первом случае результатом будет квадратная матрица, а во втором - число.

 

>> x = [1 2 3];

y = [ 4 5 6];

>>p = x' * y

p =

4    5   6

8   10  12

12 15  18

>> z = x * y'

z = 32

 

В Matlab для трехкомпонентных векторов существует функция cross, которая позволяет найти векторное произведение двух векторов-строк или векторов столбцов (рисунок 5.2).

 

 

Рисунок 5.2 – Векторное произведение трехкомпонентных векторов

Поэлементное преобразование векторов

В Matlab предусмотрены операции, преобразующие вектор в другой вектор того же размера. К так



Поделиться:


Последнее изменение этой страницы: 2021-08-16; просмотров: 190; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.117.254.177 (0.015 с.)