Практикум лаб раб. Контрольные вопросы для проверки усвоения материала и задания на выполнение работы
Скачать 1.14 Mb.
|
' » (апостроф >> W=V' % транспонировать матрицу V (преобразовать строку в столбец) W = 9 8 7 6 5 21 Для создания массивов элементы которых изменяются с некоторым заданным шагом целесообразно воспользоваться оператором « : » (двоеточие. Если шаг изменения равен 1, то его можно не указывать, а задавать только нижнюю и верхнюю границы диапазона % создать матрицу с заданным шагом изменения в строках >> D=[1:2:10; 10:-2:1; 1:5] D = 1 3 5 7 9 10 8 6 4 2 1 2 3 4 5 В системе MATLAB имеется также ряд особых функций для задания векторов и матриц. Одной из таких функций является magic (n), которая создаѐт магическую матрицу размером. Сумма всех столбцов, всех строки даже диагоналей магической матрицы равна одному и тому же числу >> M = magic(3) M = 8 1 6 3 5 7 4 9 2 Для генерирования матрицы состоящей из нулей или единиц можно воспользоваться функциями zeros (m, n) или ones (m, n), соответственно. Число строки столбцов создаваемых матриц определяется переменными m и n: >> C = ones(2, 3) C = 1 1 1 1 1 1 Функция eye (m, n) служит для создания матрицы размером m x n, содержащей единицы на главной диагонали, а все остальные элементы матрицы равны нулю >> E = eye(3, 3) E = 1 0 0 0 1 0 0 0 1 Для создания матрицы, значения элементов которой равномерно распределены в диапазоне, служит функция rand (m, n). В случае, если необходимо создать массив целых случайных чисел размером m x n в диапазоне от 0 до Imax можно воспользоваться функцией randint ( m, n, Imax). >> R = rand(2, 3) R = 0.8147 0.1270 0.6324 0.9058 0.9134 0.0975 Для просмотра в командной строке информации о загруженных в рабочее пространство переменных служат команды who и whos. Последняя команда возвращает информацию о размере и типе переменных. >> whos Name Size Bytes Class Attributes A 3x3 72 double array B 1x5 40 double array C 2x3 48 double array D 3x5 120 double array 22 E 3x3 72 double array M 3x3 72 double array R 2x3 48 double array Размер переменной в виде вектора можно получить используя команду size с указанием имени переменной >> [M N]=size(A) M = 3 N = 3 Работа с элементами матриц Массивы хранятся в соседних ячейках памяти столбец за столбцом, те. в виде последовательно расположенных векторов-столбцов. Для обращения к элементам массивов (матриц) используют индексирование. Элементы векторов получают с помощью одномерного индексирования, задавая индекс элемента в круглых скобках. При этом следует помнить, что в MATLAB индексы начинаются с 1. >> V=[9 8 7 6 5] % создать вектор-строку из 5 элементов V = 9 8 7 6 5 >> V(2) % выделить из вектора V второй элемент ans = 8 Для выделения идущих подряд элементов (блоков) массива используется оператор « : » двоеточие >> V(2:4) % выделить из вектора V блок со 2 по 4 элемент ans = 8 7 6 >> V(3:end) % выделить из вектора V блок с 3 по последний элемент ans = 7 6 5 При необходимости обращаться не к последовательным элементам, а к расположенным с определенным шагом, можно применять следующую конструкцию >> V(1:2:end) % выделить элементы вектора с нечетными индексами ans = 9 7 5 Доступ к элементам двумерного массива осуществляться при помощи двух индексов – номера строки и номера столбца, которые являются координатами элемента, заключенными в круглые скобки >> A=[1 2 3; 4 5 6; 7 8 9] % создать матрицу х A = 1 2 3 4 5 6 7 8 9 >> A(1, 2) % выделить элемент й строки го столбца ans = 2 Для выделения из матрицы строки или столбца один из индексов заменяют оператором « : » (двоеточие 23 >> A(:, 2) % выделить й столбец матрицы А ans = 2 5 8 Аналогичный результат можно получить командой >> A(1:3, 2) % выделить й столбец матрицы А ans = 2 5 8 Для получения матрицы, в которой некоторые элементы будут заменены на новые, следует выполнить следующие команды >> B=A; % создать копию матрицы А >> B(:,2)=0 % заменить й столбец нулями B = 1 0 3 4 0 6 7 0 9 >> C=A; % создать копию матрицы А >> C(2, 3)=1 % заменить элемент й строки го столбца на 1 C = 1 2 3 4 5 1 7 8 9 При работе с матрицами в некоторых случаях возникает необходимость удаления отдельных строки столбцов матрицы. Для этих целей можно воспользоваться пустыми квадратными скобками [ ]. >> A=[1 2 3; 4 5 6; 7 8 9]; A(:, 3)=[ ] % удалить третий столбец A = 1 2 4 5 7 8 Удалить некоторые столбцы или строки матрицы (выполнить прореживание) можно следующими командами >> D=randint(7,7,50) % создать матрицу х из целых чисел диапазона 0...50 D = 25 10 43 8 14 15 28 28 28 49 6 11 11 5 38 33 25 10 45 20 8 38 33 31 5 0 14 13 24 47 39 7 29 33 27 40 38 22 22 27 46 24 23 36 26 39 32 17 47 >> G=D(1:2:end,1:2:end) % удалить четные строки и столбцы G = 25 43 14 28 38 25 45 8 24 24 39 29 27 23 26 32 47 Как уже отмечалось, для обращения ко всем элементам строки или столбца можно использовать оператор двоеточие. Этот же оператор можно использовать для преобразования матрицы в вектор-столбец, что в некоторых случаях позволяет упростить команды. >> A=[1 2 3; 4 5 6]; S = A(:) % преобразовать матрицу в вектор-столбец S = 1 2 3 4 5 6 Чтобы выполнить объединение двух матриц A и B нужно создать новую матрицу используя операцию конкатенации, которая обозначается квадратными скобками (оператор [ ]). При этом объединение возможно как по горизонтали (используя в качестве разделителя пробелы или запятые, таки по вертикали (используя символ « ; » (точка с запятой. В зависимости от способа объединения необходимо следить за одинаковой размерность матриц в нужном направлении. >> A=[1 2 3 ; 4 5 6 ; 7 8 9]; B = [9 8 7 ; 6 5 4 ; 3 2 1]; >> C=[A B] % объединить матрицы A и B по горизонтали C = 1 2 3 9 8 7 4 5 6 6 5 4 7 8 9 3 2 1 >> D=[A; B] % объединить матрицы A и B по вертикали D = 1 2 3 4 5 6 7 8 9 9 8 7 6 5 4 3 2 1 Для получения значений элементов матрицы на главной диагонали служит команда di- ag с именем матрицы в качестве параметра. >> A=[1 2 3 ; 4 5 6 ; 7 8 9]; D=diag(A) D = 1 5 9 Выполнение операций с массивами, матрицами и векторами В MATLAB существует два типа арифметических операций. Матричные арифметические операции определяются правилами матричного исчисления (линейной алгебры. Арифметические операции с массивами выполняются поэлементно и их можно применять к числовым массивам. Все арифметические операции представлены в табл. 1.2 (см. лабораторную работу №1). 25 Если операции применяются к матрицам, размеры которых несогласованны между собой, тона экран будет выводиться сообщение об ошибке. Для поэлементного выполнения операций умножения, деления и возведения в степень применяются комбинированные знаки точка и знак операции. Приумножении (сложении, вычитании, делении) матрицы на скаляр соответствующая операция всегда производится поэлементно. >> A=[1 2 3]; B=[4; 5; 6]; % выполнить матричное умножение вектора-строки A на вектор-столбец B >> C=A*B C = 32 %C = 1*4 + 2*5 + 3*6 = 32 % выполнить матричное умножение вектор-столбца В на вектор-строку А >> D=B*A D = 4 8 12 5 10 15 6 12 18 % выполнить матричное умножение вектор-столбца А на скаляр С >> E=A*C E = 32 64 96 >> A=[1 2 3; 4 5 6; 7 8 9]; B=ones(3); C=A*B % выполнить умножение матриц Аи В C = 6 6 6 15 15 15 24 24 24 >> D=B*A % выполнить умножение матриц В и А D = 12 15 18 12 15 18 12 15 18 >> E=A.*B % выполнить поэлементное умножение матриц Аи В E = 1 2 3 4 5 6 7 8 9 Над массивами данных, также как и над переменными, в системе MATLAB возможно выполнение операций сравнения (см. табл. 1.3 лабораторной работы №1) и логических операций (см. табл. 1.4 лабораторной работы №1), которые выполняются поэлементно. При этом логический нуль соответствует числовому нулю, а любое отличие от нуля воспринимается как логическая единица. >> A=[1 2 3]; B=[1 0 0]; C=and(A, B) C = 1 0 0 >> D=A | B D = 1 1 1 26 Система MATLAB имеет ряд специальных функций, предназначенных для обработки данных, заданных в матричной или векторной форме (табл. 2.1). Таблица 2.1 Функции для обработки матричных (векторных) данных Функция Назначение size(A) Возвращает вектор, состоящий из числа строки числа столбцов матрицы А length(A) Возвращает длину вектора А numel(A) Возвращает число элементов массива А sum(A) Возвращает сумму всех элементов по столбцам матрицы А mean(A) Возвращает среднее значение по столбцам матрицы А std(A) Возвращает среднеквадратическое отклонение значений в каждом столбце матрицы А min(A), max(A) Возвращает минимум и максимум, соответственно, по каждому столбцу матрицы А sort(A) Сортирует каждый столбец матрицы А по возрастанию prod(A) Вычисляет произведение элементов в столбцах условие) Возвращает индексы строки столбцов c элементов массива значения которых удовлетворяют условию Для поиска максимальных элементов матрицы по каждому столбцу используем следующие команды % создаем матрицу >> A = [8 4 7 8 1; 10 3 7 3 8; 6 8 10 7 4; 2 1 8 6 7; 9 1 8 4 8] A = 8 4 7 8 1 10 3 7 3 8 6 8 10 7 4 2 1 8 6 7 9 1 8 4 8 % выделить максимальные элементы в каждом столбце >> M1=max(A) M1 = 10 8 10 8 8 % вектор максимальных значений % выделить максимальный элемент в двумерном массиве >> M2=max(max (A)) M2 = 10 % максимальное значение массива A Выделить элемент массива с максимальным значением можно и несколько иначе >> M3=max(A(:)) M3 = 10 % максимальное значение массива A Определить индексы максимальных (минимальных) элементов в массиве можно используя следующую конструкцию % определить индексы всех максимальных элементов >> [R5, C5]=find(A==max(A(:))) R5 = 2 % вектор с номерами строк всех максимальных 3 % элементов массива A 27 C5 = 1 % вектор с номерами столбцов всех максимальных 3 % элементов массива A % определить индексы первого максимального элемента массива A >> [R5, C5]=find(A==max(A(:)),1) R5 = 2 % номер строки первого максимального элемента массива A C5 = 1 % номер столбца первого максимального элемента массива A Подробную справку по каждой функции можно получить используя команду help с указанием интересующей функции. Подготовка к работе Ознакомиться с теоретическим материалом и рекомендованной литературой. Подготовить ответы на контрольные вопросы. Задание на выполнение работы Организовать ввод данных и вычисления согласно заданиям ниже. Задание В режиме командной строки сформировать четыре массива (матрицы массив А – размером х, элементы которого взять из табл. 2.2. Верхний левый элемент матрицы определяется по номеру зачѐтной книжки массив B – размером х, состоящий из единиц – вектор-строка C – размером 6 элементов, состоящий из случайных целых чисел массив R – размером х, состоящий из случайных чисел диапазона 0...1 с равномерным распределением. Получить сведения о созданных массивах используя команды whos и size. Результаты всех операций занести в отчѐт. Таблица 2.2 Варианты для выполнения задания 1 Предпоследняя цифра зачётки 0 1 2 3 4 5 6 7 8 9 Последняя цифра зач ёт ки 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 2 3 4 5 6 7 8 9 10 11 12 13 2 0 2 4 6 8 10 12 14 16 18 20 22 24 26 3 0 3 6 9 12 15 18 21 24 27 30 33 36 39 4 0 4 8 12 16 20 24 28 32 36 40 44 48 52 5 0 5 10 15 20 25 30 35 40 45 50 55 60 65 6 0 6 12 18 24 30 36 42 48 54 60 66 72 78 7 0 7 14 21 28 35 42 49 56 63 70 77 84 91 8 0 8 16 24 32 40 48 56 64 72 80 88 96 104 9 0 9 18 27 36 45 54 63 72 81 90 99 108 117 0 10 20 30 40 50 60 70 80 90 100 110 120 130 0 11 22 33 44 55 66 77 88 99 110 121 132 143 28 0 12 24 36 48 60 72 84 96 108 120 132 144 156 0 13 26 39 52 65 78 91 104 117 130 143 156 169 Задание Выполнить следующие операции в командном режиме сложить массивы A и B, результат поместить в переменную F1; из массива A вычесть массив B, результат поместить в переменную F2; перемножить матрицы A и B, результат поместить в переменную F3; умножить матрицу A на скаляра, равный сумме двух младших разрядов номера зачетной книжки. Результат занести в переменную F4; разделить матрицу A на скаляра, результат занести в переменную F5; используя матрицу B и скаляр a создать матрицу F6 того же размера, все элементы которой равны a; перемножить поэлементно матрицы A и F6, сохранив результат в переменной F7; поделить поэлементно матрицы A и F6, сохранив результат в переменной F8; преобразовать вектор-строку C в вектор-столбец Е перемножить матрицы C и E, сохранив результат в переменную F9; перемножить матрицы E и C, сохранив результат в переменную F10; перемножить матрицы Аи, сохранив результат в переменную F11; выполнить объединение матриц A и B по вертикали с созданием новой матрицы удалить пятую строку из матрицы F12; используя операцию конкатенации и вектор-столбец Е создать квадратную матрицу E6 размером х. Результаты всех операций занести в отчѐт. Задание Составить и отладить программу для выполнения всех задач из табл. 2.3. Листинг программы и результаты еѐ работы занести в отчѐт. Таблица 2.3 Задачи для выполнения задания 3 № задачи Задания Найти сумму элементов главной диагонали матрицы A Отсортировать матрицу A по возрастанию Найти минимальные значения в каждом столбце и каждой строке матрицы A Найти минимальное и максимальное значение в матрице Определить среднее значение элементов главной диагонали матрицы A Найти среднеквадратическое отклонение во всех столбцах и строках матрицы A Найти индексы всех максимальных и минимальных элементов в матрице A Найти индексы первых максимальных и минимальных элементов в матрице A Вычислить произведение всех элементов матрицы A Вычислить среднее значение элементов матрицы A 29 Задание Составить программу решающую следующие задачи создать матрицу G1 размером х состоящую из случайных чисел определить число строки столбцов c матрицы G1, а также число элементов n в ней определить значения минимального gmin и максимального gmax элементов матрицы и индексы первого минимума rmin, cmin и максимума rmax,cmax; определить скаляр k1, умножение на который преобразует элементы матрицы G1 к значениям при которых минимальное значение gmin = 1. Выполнить перемасштабирование матрицы G1 создав матрицу G2 из преобразованных значений определить скаляр k2, умножение на который преобразует элементы матрицы G1 к значениям при которых максимальное значение gmax = 1. Выполнить нормировку матрицы G1 создав матрицу G3 из преобразованных значений выполнить прореживание матрицы G1 по горизонтали исключением столбцов счетными номерами. Результат сохранить в переменной G4; выполнить прореживание матрицы G4 по вертикали исключением строк с нечетными номерами. Результат сохранить в переменной G5; выполнить прореживание матрицы G1 по горизонтали исключением столбцов счетными номерами, а по вертикали исключением столбцов с нечетными номерами. Результат сохранить в переменной G6. Сравнить результат с результатом п заменить первый и последний элемент матрицы G2 на максимальные значения gmax, создав новую матрицу G7; заменить вторую и четвертую строки матрицы G2 на строки состоящие из единиц, создав новую матрицу G8; заменить третий столбец матрицы |