пример Лабораторная 1 (1). Лабораторная работа 1. Общие принципы работы системы matlab
Скачать 40.3 Kb.
|
ЛАБОРАТОРНАЯ РАБОТА №1. ОБЩИЕ ПРИНЦИПЫ РАБОТЫ СИСТЕМЫ MATLAB Цель работы– ознакомление с системой MatLab, правилами создания числовых массивов и приобретение практических навыков по использованию средств системы для работы с ними. Название системы MatLab происходит от словMatrix Laboratory (матричная лаборатория). Пакет ориентирован на обработку массивов данных. Матричная системаMatLab выделяется из других систем тем, что ее операторы и функции имеют операнды в виде векторов и матриц. Даже операнд в виде одного числа рассматривается как матрица размера1 ×1. Так как операции с матрицами могут быть как поэлементными, так и матричными, то в поэлементные операторы добавляется точка. Например, символы точка, звездочка‘*’ определяют поэлементное умножение массивов, символ звездочка ‘*’ – матричное умножение(табл. 1). Набор любой команды должен заканчиваться нажатием клавиши Справочная информация Получить справочную информацию можно следующими операторами: helpwin– справка о разделах и функциях системыMatLab; helpdesk– общая справка о системеMatLab; doc <имя_функции> – вывод описания функции в окнеHelp∗; help <имя_функции> – краткая информация о функции; type <имя_функции> – вывод текстаm – файла функции; demo– команда вызова тестовых примеров. Операторы и функции Полный список операторов системы выводится оператором: help ops В табл. 1 приведен список арифметических операторов с синтаксисом их применения. Таблица1.1 Список арифметических операторов
Для введения комментария используют знак процента– %. Системные переменные и константы В состав объектовMatLab входит ряд системных переменных и констант , значения которых устанавливаются системой при ее загрузке или автоматически формируются в процессе вычислений. Ниже перечислены некоторые из этих объектов: Ans – применяется для записи результата, если не используется оператор присваивания. pi – число π Создание векторов и матриц Рассмотрим некоторые способы формирования числовых массивов. При их создании можно использовать: − Квадратные скобки; − Специальную конструкциюj:i:k; − Конкатенацию(объединение); − Специальные матричные функции. Для создания вектор-строки используются квадратные скобки с перечислением элементов строки через пробел или запятую и специальная конструкция j:i:k с указанием начального значения вектора– j, шага– i и конечного значения вектора– k через двоеточие(если значение шага равно1, его можно не указывать). Для создания вектор-столбца элементы вектора перечисляются через точку с запятой в квадратных скобках или транспонируется полученный ранее вектор-строка. Для выполнения операции транспонирования используется одиночная кавычка('), которая ставится после индетификатора, определяющего транспонируемую структуру . Для комплексных матриц транспонирование дополняется сопряжением матрицы. Точка с одиночной кавычкой(.') используется для транспонирования массива без операции сопряжения для комплексных матриц. Для создания матрицы можно использовать следующие способы ввода элементов в квадратных скобках: 1. По строкам, разделяющимся точкой с запятой; 2. По столбцам, заданным в квадратных скобках; 3. По строкам в интерактивном режиме. Задание1. Создать вектор-строку , вектор-столбец и матрицы: x = [1 2 3 4 5] % создание вектор-строки x = 1 2 3 4 5 % результат x = 1:10 x = 1 2 3 4 5 6 7 8 9 10 % результат x = [1;2;3;4;5] % создание вектор-столбца x = 1 2 3 4 5 a = 9:2:18 % вектор-строка с начальным значением9, конечным– 18, с шагом 2 a = 9 11 13 15 17 a1 = a' % транспонирование вектор-строки а в вектор-столбец а1 a1 = 9 11 13 15 17 x = [1 2 3; 4 5 6; 7 8 9]; % создание матрицы способом 1) x = [[1;4;7] [2;5;8] [3;6;9]]; % создание матрицы способом 2) x = [1 2 3 < Enter> % создание матрицы способом 3) 4 5 6 7 8 9]; Задание2. Создать матрицу , используя вертикальную и горизонтальную конкатенацию: a= [1;2;3] % создание вектор-столбца из трех элементов a = 1 2 3 A = [a,a,a] % горизонтальная конкатенация из трех вектор-столбцов а A = 1 1 1 2 2 2 3 3 3 b = [1 4 8]; % создание вектор-строки из трех элементов >> B = [b;b;b] % вертикальная конкатенация из трех векторов-строк b B = 1 4 8 1 4 8 1 4 8 A1 = [0 0;0 1]; % создание матриц А1 и А2 размерностью2 ×2 >> A2 = [5 6;1 8]; >> A3 = [1 8 6 9]; % создание вектор-строки из четырех элементов >> H = [A1,A2;A3] % горизонтальная конкатенация и вертикальная % конкатенация H = 0 0 5 6 0 1 1 8 1 8 6 9 Специальные матричные функции Функция zeros создает матрицу , заполненную нулями(нулевую матрицу): zeros(m,n) – задание матрицыm ×n нулей; zeros(n) – задание квадратной матрицы изn ×n нулей. Функция ones создает матрицу , заполненную единицами(единичную матрицу): ones(m,n)– создание единичной матрицы размеромm ×n; ones(n) – задание квадратной матрицы изn ×n единиц. Функция randn создает матрицу , заполненную нормально-распределенными случайными числами. randn (m,n) – задание матрицыm ×n нормально-распределенных случайных чисел. randn (n) – задание квадратной матрицыn ×n. Функция rand создает матрицу , заполненную равномерно-распределенными случайными числами. rand (m,n) – задание матрицыm ×n равномерно-распределенных случайных чисел. Функция repmat() создает матрицу , копируя исходный массив заданное число раз по вертикали и горизонтали. B = repmat(A,M,N)– функция создает матрицу B, состоящую из M копий А по вертикали и N копий А по горизонтали, то есть M ×N копий массива A (если А– число, функция формирует матрицу размером M ×N со значением элементов, равных А). Задание3. Создать квадратную единичную матрицу размерностью2 ×2: ones(2) ans = 1 1 1 1 Задание 4. Создать вектор-столбец с помощью вертикальной конкатенации с использованием функций rand и randn: x1 = [rand(2,1);randn(2,1)] x1 = 0.8147 0.9058 -2.2588 0.8622 Задание 5. Создать матрицу с помощью горизонтальной конкатенации с использованием функций ones и zeros: x1 = [ones(2,1),zeros(2,1)] x1 = 1 0 1 0 Задание 6. Сформировать матрицуc использованием вектор-строки а из трех элементов: a = [1 5 9]; >> A = repmat(a,2,1) A = 1 5 9 1 5 9 Задание 7. Сформировать матрицу размерностью2 ×3, все элементы которой равны десяти: repmat(10,2,3) ans = 10 10 10 10 10 10 Индексация массивов Элементы массивов обладают двумя свойствами: порядковым номером (индексом) в массиве и собственно значением. Нумерация элементов в системе MatLab начинается с единицы. Для указания индексов элементов массивов используются круглые скобки(ошибка при индексации массива генерируется в том случае, если индекс элемента меньше единицы или больше размера массива). Задание 8. Задать вектор-строку из четырех элементов и изменить третий элемент на значение 8: a = [1 2 7 9]; >> a(3) = 8 a = 1 2 8 9 Задание 9. Изменить значение элемента матрицы случайных чисел S, находящегося во второй строке и в четвертом столбце, на1: S = rand(4) S = 0.6324 0.9575 0.9572 0.4218 0.0975 0.9649 0.4854 0.9157 0.2785 0.1576 0.8003 0.7922 0.5469 0.9706 0.1419 0.9595 >> S(2,4) = 1 S = 0.6324 0.9575 0.9572 0.4218 0.0975 0.9649 0.4854 1.0000 0.2785 0.1576 0.8003 0.7922 0.5469 0.9706 0.1419 0.9595 Для указания блока элементов массива используется символ двоеточие':'. Обнулить в матрице F целых чисел размерностью 4 ×4 элементы, находящиеся во второй и третьей строке и в первом и втором столбцах: F = [1 4 7 9;5 9 8 3;9 6 5 3;7 6 9 2]; >> F(2:3,1:2) = 0 F = 1 4 7 9 0 0 8 3 0 0 5 3 7 6 9 2 Задание 10. Обнулить третий и четвертый столбец из предыдущего примера: F(:,3:4) = 0 F = 1 4 0 0 0 0 0 0 0 0 0 0 7 6 0 0 Пустые квадратные скобки удаляют информацию из индексированной структуры. A(m,:) = [ ] – удаляет строку m из матрицы A. A(:,n) = [ ] – удаляет столбец n из матрицы A. Сервисные функции [M,N] = size(<идентификатор_массива>)– возвращает размер массива, где M – число строк; N – число столбцов. Задание 11. Определить размерность единичной матрицы: s = ones(2,3); >> [M,N] = size(s) M = 2 N = 3 max(<идентификатор_массива>) и min(<идентификатор_массива>)– вычисляет вектор строку , содержащую максимальные или минимальные элементы в каждом столбце матрицы. Задание 12. Определить максимальные значения матрицы случайных чисел: v = rand(3) v = 0.6557 0.9340 0.7431 0.0357 0.6787 0.3922 0.8491 0.7577 0.6555 >> ma = max(v) ma = 0.8491 0.9340 0.7431 Чтобы найти экстремальное значение в матрице, надо преобразовать ее в вектор. Для этого можно использовать функцию reshape (X,M,N), где X – преобразуемая матрица, M – размерность матрицы по вертикали(число строк) , N – размерность по горизонтали(число столбцов). Задание 13. Преобразовать матрицу из предыдущего примера в вектор-строку и найти экстремальные значения. [M,N] = size(v); >> k= reshape(v,1,M*N) k = 0.6557 0.0357 0.8491 0.9340 0.6787 0.7577 0.7431 0.3922 0.6555 >> max(k) ans = 0.9340 >> min(k) ans = 0.0357 Более простой способ нахождения экстремального значения в массиве размерностью больше единицы– представить этот массив одномерным, используя индексацию всех значений: max(v(:)) ans = 0.9340 length(<идентификатор_массива>)– определение длины вектора; для матрицы это эквивалентно выполнению функций max(size(X)). Задание 14. Определить длину заданного вектора: c = [1 8 6 0 2 9 5]; >> length(c) ans = 7 Одиночная кавычка(') используется для создания строковой константы, например: >> a = 'Введите матрицу'; Одиночная кавычка также используется для выполнения операции транспонирования 2. ЗАДАНИЯ ДЛЯ САМОСТОЯТЕЛЬНОГО РЕШЕНИЯ Задание 1. Создать вектор-строку: начальный элемент равен –π, конечный π, шаг равен 0.1. Транспонировать строку в столбец. X=[-pi:0.1:pi]; >> X1=X' X1 = -3.1416 -3.0416 -2.9416 ………… 2.9584 3.0584 Задание 2. Создать три вектор-строки из 5 элементов fi=[xn,xn-1,xn-2,xn-3,xn-4] где n=5 для всех x=2,3,4. Объединить эти строки в матрицу А(3 × 5). x= [2 3 4]; n=5; f1=[x(1)^n,x(1)^(n-1),x(1)^(n-2),x(1)^(n-3),x(1)^(n-4)] f1 = 32 16 8 4 2 f2=[x(2)^n,x(2)^(n-1),x(2)^(n-2),x(2)^(n-3),x(2)^(n-4)] f2 = 243 81 27 9 3 f3=[x(3)^n,x(3)^(n-1),x(3)^(n-2),x(3)^(n-3),x(3)^(n-4)] f3 = 1024 256 64 16 4 A=[f1; f2; f3] A = 32 16 8 4 2 243 81 27 9 3 1024 256 64 16 4 Задание 3. Создать три вектор-столбца из 5 элементов арифметической прогрессии. Элемент арифметической прогрессии рассчитывается по формуле: An= an-1+d, где аn-1 – предыдущий элемент; аn – последующий. Пять элементов вектора формируются, начиная с задания первого элемента а и c использованием шага арифметической прогрессииd для задания последующих элементов: − Для первого вектор-столбцаa = 2; d = 1; − Для второго вектор-столбцаa = 7; d = 2; − Для третьего вектор-столбцаa = 10; d = –2. 1. Объединить эти вектор-столбцы в матрицу В(5 × 3). 2. Транспонировать матрицу В из предыдущего пункта задания и объединить с матрицей А в матрицу М(6 × 5). 3. Из матрицыA убрать вторую строку . 4. У матрицы В обнулить третью строку и убрать две последние строки. 5. Создать матрицу Н(2 ×2) путем выделения первых двух строк и столбцов матрицы М из четвертого пункта задания. 6. Создать с помощью функции repmat матрицу , состоящую из 2 × 3 матриц Н. 7. Создать матрицы размерностью3 × 3: C – единиц; D – нулей; E – равномерно распределенных случайных чисел; F – нормально-распределенных случайных чисел. 8. Найти минимальный элемент в матрице равномерно-распределенных чисел размерностью 3 ×5, используя функцию reshape. 9. Создать символьные константы: а) Миру мир; б) Введите матрицу , ввести комментарий: Использование интерактивного ввода. >> a1(1)=2; >> d=1; >> i=1; >> for i=1:4 a1(i+1)=a1(i)+d; end >> a1=a1' a1 = 2 3 4 5 6 >> a2(1)=7; >> d=2; >> i=1; >> for i=1:5 a2(i+1)=a2(i)+d; end >> a2=a2' a2 = 7 9 11 13 15 >> a3(1)=10; >> d=-2; >> i=1; >> for i=1:4 a3(i+1)=a3(i)+d; end a3=a3' a3 = 10 8 6 4 2 Задание 1. >> B= [a1 a2 a3] B = 2 7 10 3 9 8 4 11 6 5 13 4 6 15 2 Задание2 B=B' B = 2 3 4 5 6 7 9 11 13 15 10 8 6 4 2 M=[B;A] M = 2 3 4 5 6 7 9 11 13 15 10 8 6 4 2 32 16 8 4 2 243 81 27 9 3 1024 256 64 16 4 Задание 3 A(2,:)=[] A = 32 16 8 4 2 1024 256 64 16 4 Задание 4 B(3,:)=0 B = 2 3 4 5 6 7 9 11 13 15 0 0 0 0 0 > B(2:3,:)=[] B = 2 3 4 5 6 Задание 5 H=[M(1,1) M(1,2);M(2,1) M(2,2)] H = 2 3 7 9 Задание 6 repmat(H,2,3) ans = 2 3 2 3 2 3 7 9 7 9 7 9 2 3 2 3 2 3 7 9 7 9 7 9 Задание 7 C=ones(3) C = 1 1 1 1 1 1 1 1 1 D=zeros(3) D = 0 0 0 0 0 0 0 0 0 E=rand(3,3) %матрица равномерно-распределенных случайных чисел E = 0.6948 0.0344 0.7655 0.3171 0.4387 0.7952 0.9502 0.3816 0.1869 F=randn(3,3) % матрица нормально-распределенныхслучайных чисел F = -0.0301 1.0933 0.0774 -0.1649 1.1093 -1.2141 0.6277 -0.8637 -1.1135 Задание 8 Q=rand(3,5) Q = 0.4984 0.5853 0.2551 0.8909 0.1386 0.9597 0.2238 0.5060 0.9593 0.1493 0.3404 0.7513 0.6991 0.5472 0.2575 >> [m,n]=size(Q); >> p=reshape(Q,1,m*n); >> min=min(p) min = 0.1386 Задание 9 >> S='Миру мир' S =Миру мир >> S1='Введите матрицу' %Использование интерактивного ввода S1 =Введите матрицу Контрольные вопросы Как представляется информация в системе MatLab? Почти вся информация здесь представляется обычным текстом, который при желании можно сохранять – в отличие от других систем Как можно создать векторы в системеMatLab? a = [1 2 3 4]; % вектор-строка Если требуется задать вектор-столбец, то это можно сделать так a = [1; 2; 3; 4]; % вектор-столбец или так b = [1 2 3 4]’; % вектор-столбец Например, следующий фрагмент программы показывает, как можно создавать один вектор на основе другого: a = [1 2 3 4]; % начальный вектор a = [1 2 3 4] b = [a 5 6]; % второй вектор b = [1 2 3 4 5 6] a = [a 5]; % увеличение вектора а на один элемент a1 = zeros(1, 100); % вектор-строка, 100 элементов с % нулевыми значениями a2 = zeros(100, 1); % вектор-столбец, 100 элементов с % нулевыми значениями a3 = ones(1, 1000); % вектор-строка, 1000 элементов с % единичными значениями a4 = ones(1000, 1); % вектор-столбец, 1000 элементов с % единичными значениями a5 = rand(1000, 1); % вектор-столбец, 1000 элементов со % случайными значениями Какой вектор генерирует функция logspace? Функция logspace генерирует вектор равноотстоящих в логарифмическом масштабе точек. Она особенно эффективна при создании вектора частот. logspace(a.b) – возвращает вектор-строку из 50 равноотстоящих в логарифмическом масштабе точек между декадами 10^0 и 10^b; logspace(a.b.n) – возвращает n точек между декадами 10^a и 10^b; logspace(a.pi) – возвращает точки в интервале между 10^a и n. Эта функция очень полезна в цифровой обработке сигналов. Все аргументы функции logspace должны быть скалярными величинами. Пример: >> L=logspaced.2.14) L = Columns 1 through 7 10.000011.937814.251017.012520.309224.244628.9427 Columns 8 through 14 34.551141.246349.238858.780270.170483.7678100.0000 Как можно создать матрицы в системе MatLab? Матрицы в MatLab задаются аналогично векторам с той лишь разницей, что указываются обе размерности. Приведем пример инициализации единичной матрицы размером 3х3: E = [1 0 0; 0 1 0; 0 01]; % единичная матрица 3х3 или E = [1 0 0 0 1 0 0 0 1]; % единичная матрица 3х3 Для доступа к элементам матрицы применяется такой же синтаксис как и для векторов, но с указанием строки и столбца где находится требуемый элемент: A = [1 2 3;4 5 6;7 8 9]; % матрица 3х3 disp(A(2,1)); % вывод на экран элемента, стоящего во % второй строке первого столбца, т.е. 4 disp(A(1,2)); % вывод на экран элемента, стоящего в % первой строке второго столбца, т.е. 2 Также возможны операции выделения указанной части матрицы, например: B1 = A(:,1); % B1 = [1; 4; 7] – выделение первого столбца B2 = A(2,:); % B2 = [1 2 3] – выделение первой строки B3 = A(1:2,2:3); % B3 = [2 3; 5 6] – выделение первых двух % строк и 2-го и 3-го столбцов матрицы А. Размерность любой матрицы или вектора в MatLab можно определить с помощью функции size(), которая возвращает число строк и столбцов переменной, указанной в качестве аргумента: a = 5; % переменная а A = [1 2 3]; % вектор-строка B = [1 2 3; 4 5 6]; % матрица 2х3 size(a) % 1х1 size(A) % 1х3 size(B) % 2х3 Какие вы знаете специальные функции для создания матриц? Можно использовать функции zeros(), ones() и rand(), например: A1 = zeros(10,10); % нулевая матрица 10х10 элементов или A2 = zeros(10); % нулевая матрица 10х10 элементов A3 = ones(5); % матрица 5х5, состоящая из единиц A4 = rand(100); % матрица 100х100, из случайных чисел Каким образом производится индексация массивов в системе MatLab, удаление, обнуление строк, столбцов? Элементы массивов обладают двумя свойствами: порядковым номером (индексом) в массиве и собственно значением. Нумерация элементов в системе MatLab начинается с единицы. Для указания индексов элементов массивов используются круглые скобки(ошибка при индексации массива генерируется в том случае, если индекс элемента меньше единицы или больше размера массива). >> F(:,3:4) = 0 //обнуляет 3 и 4 столбец F = 1 4 0 0 0 0 0 0 0 0 0 0 7 6 0 0 Пустые квадратные скобки удаляют информацию из индексированной структуры. A(m,:) = [ ] – удаляет строку m из матрицы A. A(:,n) = [ ] – удаляет столбец n из матрицы A. Чем отличается определение почленных и матричных операций в системе MatLab? Почленные операции обращаются к определенному значению матрицы, а матричные операции наоборот обращаются ко всей матрице. Как получить транспонированный массив? транспонирование матрицы производится при помощи апострофа' Как можно объединить матрицы? конкатенации —объединения малых матриц в большую. Как создаются строковые константы? Для задания строковых констант в MATLAB используются апострофы Какие системные переменные и константы есть в системе MatLab? i или j — мнимая единица (корень квадратный из -1); pi – число п - 3.1415926...; eps — погрешность операций над числами с плавающей точкой (2-52); realmin — наименьшее число с плавающей точкой (2-1022); realmax — наибольшее число с плавающей точкой (21023); inf — значение машинной бесконечности; ans — переменная, хранящая результат последней операции и обычно вызывающая его отображение на экране дисплея; NaN — указание на нечисловой характер данных (Not-a-Number). Как вводится комментарий? % Как можно определить размер массива? Reshape(m,n) |