36427

Работа с матрицами в Matlab

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

Информатика, кибернетика и программирование

Например матрицу можно ввести следующим образом: набрать в командной строке разделяя элементы строки матрицы пробелами: =[0. Элементы каждой следующей строки матрицы набираются через пробел а ввод строки завершается нажатием на Enter . Другой способ ввода матрицы основан на том что матрицу можно рассматривать как векторстолбец каждый элемент которого является строкой матрицы.

Русский

2013-09-21

227.5 KB

59 чел.

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

Работа с матрицами в Matlab

Матрицы небольших размеров удобно вводить из командной строки. Существует три способа ввода матриц. Например, матрицу

можно ввести следующим образом: набрать в командной строке (разделяя элементы строки матрицы пробелами): A=[0.7 –2.5 9.1 и нажать <Enter>. Курсор перемещается в следующую строку (символ приглашения командной строки >> отсутствует). Элементы каждой следующей строки матрицы набираются через пробел, а ввод строки завершается нажатием на <Enter>. При вводе последней строки в конце ставится закрывающая квадратная скобка:

>> A=[0.7 -2.5 9.1

8.4 0.3 1.7

-3.5 6.2 4.7]

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

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

осуществляется оператором присваивания:

>> B=[6.1 0.3; -7.9 4.4; 2.5 -8.1];

Введите матрицу В и отобразите ее содержимое в командном окне, набрав в командной строке B и нажав <Enter>.

Очевидно, что допустима такая трактовка матрицы, при которой она считается вектор-строкой, каждый элемент которой является столбцом матрицы. Следовательно, для ввода матрицы

достаточно воспользоваться командой:

>> C=[[0.4; 0.1] [-7.2; -2.1] [5.3; -9.5]]

Обратите внимание, что внутренние квадратные скобки действительно нужны. Оператор C=[0.4; 0.1 -7.2; -2.1 5.3; -9.5] является недопустимым и приводит к сообщению об ошибке, поскольку оказывается, что в первой строке матрицы содержится только один элемент, во второй и третьей — по два, а в четвертой — снова один.

Воспользуйтесь командой whos для получения информации о переменных A, B и C рабочей среды. В командное окно выводится таблица с информацией о размерах массивов, памяти, необходимой для хранения каждого из массивов, и типе — double array:

>> whos A B C

Name Size Bytes Class

A 3x3 72 double array

B 3x2 48 double array

C 2x3 48 double array

Функция size позволяет установить размеры массивов, она возвращает результат в виде вектора, первый элемент которого равен числу строк, а второй — столбцов:

>> s=size(B)

s =

3 2

Сложение и вычитание матриц одинаковых размеров производится с использованием знаков +, -.

Звездочка * служит для вычисления матричного произведения, причем соответствующие размеры матриц должны совпадать, например:

>> P=A*B

P =

46.7700 -84.5000

53.1200 -9.9300

-58.5800 -11.8400

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

Апостроф ' предназначен для транспонирования вещественной матрицы или нахождения сопряженной к комплексной матрице. Для возведения квадратной матрицы в степень применяется знак ^.

Вычислите для тренировки матричное выражение , в котором А, В и С — определенные выше матрицы. Ниже приведена запись в MatLab этого выражения:

>> R=(A-B*C)^3+A*B*C

R =

1.0e+006 *

-0.0454 0.1661 -0.6579

0.0812 -0.2770 1.2906

-0.0426 0.1274 -0.7871

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

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

>> C(1,2)

ans =

-7.2000

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

>> c1=A(2:3,2)

c1 =

0.3000

6.2000

>> r1=A(1,1:3)

r1 =

0.7000 -2.5000 9.1000

Для обращения ко всей строке или всему столбцу не обязательно указывать через двоеточие начальный (первый) и конечный индексы, то есть операторы r1=A(1,1:3) и r1=A(1,:) эквивалентны.

Для доступа к элементам строки или столбца от заданного до последнего можно использовать end, так же как и для векторов: A(1,2:end). Выделение блока, состоящего из нескольких строк и столбцов, требует индексации двоеточием как по первому измерению, так и по второму. Пусть в массиве T хранится матрица:

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

>> T1=T(2:3,2:4)

T1 =

-5 -6 3

4 5 -1

Индексация двоеточием так же очень полезна при различных перестановках в массивах. В частности, для перестановки первой и последней строк в произвольной матрице, хранящейся в массиве A, подойдет последовательность команд:

>> s=A(1,:);

>> A(1,:)=A(end,:);

>> A(end,:)=s;

MatLab поддерживает такую операцию, как вычеркивание строк или столбцов из матрицы. Достаточно удаляемому блоку присвоить пустой массив, задаваемый квадратными скобками. Например, вычеркивание второй и третьей строки из массива T, введенного выше, производится следующей командой:

>> T(2:3,:)=[]

T =

1 7 -3 2 4 9

-6 -4 7 2 6 1

Индексация двоеточием упрощает заполнение матриц, имеющих определенную структуру. Предположим, что требуется создать матрицу

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

>> W(1:5,1:5)=0;

>> W(1,:)=1;

>> W(end,:)=1;

>> W(:,1)=1;

>> W(:,end)=1;

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

числами через запятую (в двух входных аргументах);

одним числом, результат — квадратная матрица;

вектором из двух элементов, равных числу строк и столбцов.

Таблица 1

Функции для создания стандартных матриц

Функция

Результат и примеры вызовов

zeros

Нулевая матрица

F=zeros(4,5) F=zeros(3) F=zeros([3 4])

eye

Единичная прямоугольная матрица (единицы расположены на главной диагонали)

I=eye(5,8) I=eye(5) I=eye([5 8])

ones

Матрица, целиком состоящая из единиц

E=ones(3,5) E=ones(6) E=ones([2 5])

rand

Матрица, элементы которой — случайные числа, равномерно распределенные на интервале (0,1)

R=rand(5,7) R=rand(6) R=rand([3 5])

randn

Матрица, элементы которой — случайные числа, распределенные по нормальному закону с нулевым средним и дисперсией равной единице

N=randn(5,3) N=randn(9) N=randn([2 4])

diag

1) диагональная матрица, элементы которой задаются во входном аргументе — векторе

D=diag(v)

2) диагональная матрица со смещенной на k позиций диагональю (положительные k — смещение вверх, отрицательные — вниз), результатом является квадратная матрица размера length(v)+abs(k)

D=diag(v,k)

3) выделение главной диагонали из матрицы в вектор

d=diag(A)

4) выделение k-ой диагонали из матрицы в вектор

d=diag(A,k)

Данные функии очень удобны, когда требуется создать стандартную матрицу тех же размеров, что и некоторая имеющаяся матрица. Если, к примеру, A была определена ранее, то команда I=eye(size(A)) приводит к появлению единичной матрицы, размеры которой совпадают с размерами A, так как функция size возвращает размеры матрицы в векторе.

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

Введите вектор v с целыми числами от одного до семи v=[1 2 3 4 5 6 7] и используйте его для создания диагональной матрицы и матрицы со смещенной на единицу вверх диагональю. Вектор длины шесть, содержащий пятерки, заполняется, например, так: 5*ones(1,6). Этот вектор укажите в первом аргументе функции diag, а минус единицу — во втором и получите третью вспомогательную матрицу. Теперь достаточно вычесть из первой матрицы вторую и сложить с третьей:

>> T=diag(v)-diag(v(1:6),1)+diag(5*ones(1,6),-1)

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

A.*B, A./B— поэлементные умножение и деление;

A.^p — поэлементное возведение в степень, p — число;

A.^B — возведение элементов матрицы A в степени, равные соответствующим элементам матрицы B;

A.' — транспонирование матрицы (для вещественных матриц A' и A.' приводят к одинаковым результатам);

Иногда требуется не просто транспонировать матрицу, но и "развернуть" ее. Вращение матрицы на 90o против часовой стрелки осуществляет функция rot90:

>> Q=[1 2;3 4]

Q =

1 2

3 4

>> R=rot90(Q)

R =

2 4

1 3

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

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

и проверьте полученный результат, возведя его в квадрат (по правилу матричного умножения, а не поэлементно!):

>> K=[3 2; 1 4];

>> S=sqrtm(K)

S =

1.6882 0.5479

0.2740 1.9621

>> S*S

ans =

3.0000 2.0000

1.0000 4.0000

Матричная экспонента вычисляется с использованием expm. Специальная функция funm служит для вычисления произвольной матричной функции.

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

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

M =

1 2 3

4 5 6

7 8 9

>> s=sum(M)

s =

12 15 18

Если в качестве второго входного аргумента sum указать 2, то суммирование произойдет по строкам.

Для вычисления суммы всех элементов матрицы требуется дважды применить sum:

>> s=sum(sum(M))

s =

45

Очень удобной возможностью MatLab является конструирование матрицы из матриц меньших размеров. Пусть заданы матрицы:

,   ,   ,   

Требуется составить из М1, М2, М3 и  М4 блочную матрицу М

Можно считать, что М имеет размеры два на два, а каждый элемент является, соответственно, матрицей М1, М2, М3 или М4. Следовательно, для получения в рабочей среде MatLab массива M с матрицей М требуется использовать оператор:

>> M=[M1 M2; M3 M4]

Задания лабораторной работы

В лабораторную работу № 2 входит 4 задания.

Задание 1

Введите матрицы

     

и найдите значения следующих выражений.

Варианты:

Выражение

1

2

3

4

5

6

7

8

9

10

Задание 2

При помощи встроенных функций для заполнения стандартных матриц, индексации двоеточием и, возможно, поворота, транспонирования или вычеркивания получите следующие матрицы:

Варианты:

1.    2.    3.

4.    5.    6.

7.   8.

9.    10.

Задание 3

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

Варианты:

1. ,   

2. ,   

3. ,   

4. ,   

5. ,   

6. ,   

7. ,   

8. ,   

9. ,   

10. ,   

Задание 4

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

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

Варианты:

1. ;   

2. ;   

3. ;   

4. ;   

5. ;   

6. ;   

7. ;   

8. ;   

9. ;   

10. ;   

PAGE  11


 

А также другие работы, которые могут Вас заинтересовать

42405. Имитация трёхмерного текста 87 KB
  Нажмите [ltBckspce] [CtrlBckspce] [ltDelete] [CtrlDelete] чтобы залить фон черным цветом. Выберите пункт меню Edit Trnsform Perspective или нажмите [CtrlT] свободная трансформация и удерживая клавишу [Ctrl] передвигайте за углы и придайте надписи вид сходный с рисунком ниже. Затем скопируйте получившийся слой [CtrlJ] путём перетаскивания его на иконку Crete New Lyer в палитре Lyers Слои. Переключитесь на слой Bckground и нажмите [CtrlShiftE] чтобы произвести слияние видимых слоёв.
42406. Создание «металлических» надписей 99 KB
  Новому каналу будет автоматически присвоено имя lph 1. Скопируйте канал lph 1 путём перетаскивания его на пиктограмму Crete New Chnnel в палитре Chnnels. Новому каналу будет присвоено имя lph 2 и он станет активным. Примените к каналу lph 2 фильтр Gussin Blur со значением 3 pixels.
42407. Работа с режимом редактирования маски 476 KB
  Нажмите [D] чтобы установить foreground цвет в черный. Нажмите [CtrlI] чтобы инвертировать выделение после чего нажмите [Del] чтобы удалить ненужное выделение. Нажмите [CtrlD] чтобы снять выделение. Нажмите OK.
42408. Работа с простыми объектами в Corel Draw 66 KB
  Порядок выполнения работы Для того чтобы нарисовать линию необходимо воспользоваться горячей клавишей [F5] или иконкой на панели инструментов. Для того чтобы вставить прямоугольник можно воспользоваться иконкой на панели инструментов или горячей клавишей [F6]. Для того чтобы вставить окружность можно воспользоваться горячей клавишей [F7] или воспользоваться иконкой на панели задач. Как и с прямоугольником можно воспользоваться дополнительными клавишами [Ctrl и или Shift].
42409. Работа с текстом и заливкой в Corel Draw 383.5 KB
  Для того чтобы залить объект заливкой можно воспользоваться одним из инструментов: Fill Color Dilog [ShiftF11] Fountin Fill Dilog [F11] Pttern Fill Dilog Texture Fill Dilog PostScript Fill Dilog Not Fill. Fill Color Dilog Fountin Fill Dilog Pttern Fill Dilog Texture Fill Dilog PostScript Fill Dilog Not Fill – убирает заливку Содержание отчета Тема и цель лабораторной работы Отчет о проделанной работе Вывод Контрольные вопросы Как с помощью горячих клавиш вставить текст Какие параметры текста можно выставить на...
42410. Создаем иллюзию стекла в Corel Draw 356.5 KB
  Создайте продолговатый треугольник. Выделите созданный вами треугольник откройте панель Effects Extrude выдавливание и нажмите кнопку Edit редактирование. Под вашим треугольником пунктирной линией будет отображаться копия. Если вы точно следовали инструкциям ваш осколок должен быть похож на тот что изображен на рисунке: Теперь выделите исходный треугольник на созданном вами осколке.
42411. КОМПОЗИЦИЯ. Симметричные и ассиметричные композиции 81 KB
  Характеристики композиции Вы можете грамотно построить тени и перспективу подобрать цветовые сочетания шрифтовое оформление но работа не станет своеобразной и выразительной. Это и есть характеристики композиции. Формы элементов композиции и форма композиции в целом могут оказывать огромное эмоциональное воздействие.
42412. Композиция в технике 149 KB
  Например литая несущая конструкция должна быть такой формы чтобы не возникало сомнений это именно литье а не сварная или какаялибо иная конструкция. Поэтому можно говорить о тектонике литой формы тектонике легких штампованных несущих элементов и тектонике пластмассовых конструкций. Образно говоря тектоника это искренность формы в отношении конструкции и материала. Объемнопространственную структуру можно определить как эстетически осмысленную взаимосвязь формы предмета с его внутренним строением и внешним пространством рассмотрите...
42413. Построение изображения на плоскости 183.5 KB
  Точка съемки определятся следующими параметрами координатами: а удаленностью от объекта т. расстоянием с которого ведется съемка; б высотой установки фото или видеокамеры; в смещением фото или видеокамеры в сторону от ее центрального положения относительно снимаемого объекта определяющем направление съемки. Удаленность от объекта определяет масштаб изображения который увеличивается с приближением точки съемки к объекту и уменьшается с увеличением расстояния между точкой установки камеры и снимаемым объектом.