Главная страница

Практикум лаб раб. Контрольные вопросы для проверки усвоения материала и задания на выполнение работы


Скачать 1.14 Mb.
НазваниеКонтрольные вопросы для проверки усвоения материала и задания на выполнение работы
Дата03.02.2018
Размер1.14 Mb.
Формат файлаpdf
Имя файлаПрактикум лаб раб.pdf
ТипКонтрольные вопросы
#35741
страница3 из 8
1   2   3   4   5   6   7   8
' » (апостроф
>> 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; заменить третий столбец матрицы
1   2   3   4   5   6   7   8


написать администратору сайта