1 Работа с матрицами Отличительная черта системы: ориентация
1 Работа с матрицами Отличительная черта системы: ориентация на операции с матрицами! Каждое число – матрица единичного размера. 1. Примеры: векторные и базовые матричные операции 2. Вычисления в одной строке: B=A^3–2*A^(1/3) 3. Решение системы линейных уравнений A*X=B: X=inv(A)*B 4. Встроенные функции работают с векторами: x=1:10, y=sin(x)
2 Примеры создания матриц Создание вектора-строки: R=[1 3 5 7]; R=[1, 3, 5, 7]; R=1:2:7 Создание вектора-столбца: C=[1; 3; 5; 7]; C=[1, 3, 5, 7]'; C=[1:2:7]' Создание матрицы 3x4: M2D=[1 2 3 4; 5 6 7 8; 9 10 11 12]; Создание матрицы 3x4x3: M3D(:,:,1)=[0.1 0.3 -0.4 1; -0.8 0 0 3; 0 0.1 -0.3 2]; M3D(:,:,2)=M2D; M3D(:,:,3)=[0.1 0.3 -0.4 1; -0.8 0 0 3; 0 0.1 -0.3 2]+2*M2D;
3 Примеры работы с участками матриц Чтение / изменение отдельного элемента: el=M2D(2,3); M2D(3,4)=7; Изменение строки в матрице: M2D(2,:)=R; M2D(2,:)=C'; M2D(3,:)=[0 -1 -2 -3]; Изменение столбца в матрице: M2D(:,2)=C(1:3); Изменение участка в матрице: M2D(1:2,2:3)=[0.1, 0.2; 0.3 0.4]; M2D(1:2,2:3)=3*M2D(1:2,2:3); M2D(1:2,2:3)=M2D(2:3,1:2)+M2D(1:2,3:4);
4 Пример решения системы линейных уравнений методом Крамера Дано: A – матрица 2x2, B – столбец 2x1 Необходимо вычислить X: A*X=B Решение: A1=[ B, A(:,2) ]; % замена первого столбца на B A2=[ A(:,1), B ]; % замена второго столбца на B X(1)=det(A1)/det(A); X(2)=det(A2)/det(A); X=X(:)
5 Комплексные числа z=5+3i: z=5+3*i=5+3i z=5+3*j=5+3i Составляются из двух независимых частей численного типа при помощи символов i, j (мнимые единицы): Сумма: Zsum=Z(1)+Z(2) Произведение: Zprod=Z(1)*Z(2) (модуль, аргумент произведения) Векторизация: Z=complex([5; 3],[4; –1]) Re=real(Z) Im=imag(Z) Модуль, аргумент: A=abs(Z) Fi=angle(Z)
6 Основные системные переменные ans – результат вычисления последнего не сохраненного выражения i, j – мнимая единица для задания мнимой части комплексных чисел Inf – обозначение машинной бесконечности (infinity) – в массивах! NaN – Not-a-Number – неопределенный результат (0/0, Inf/Inf) – в массивах! pi – число ( pi=3,141592653589793) …. Задаются после загрузки системы и могут использоваться в арифметических выражениях. Mогут быть переопределены пользователем!
7 Основы программирования в MATLAB
8 Содержание Типы файлов в MATLAB. Файлы функций. Подфункции. Встроенный редактор файлов. Анализатор кода. Подключение программ пользователя к системе MATLAB. Основы программирования в MATLAB: часто используемые функции. Матричные вычисления, векторизация кода, предварительное задание переменных. Задание имен функций и переменных, венгерская нотация. Интерпретатор языка MATLAB. Создание псевдокода.
9 Типы файлов MATLAB >> prog1 c = 0.2 >> c=prog2(3,4) c = 0.2 Вызов из Командного окна: нет ; печать в Ком. окно
10 Отличия функций от сценариев Функция отличается от сценария наличием ключевого слова function в заголовке. Все переменные, создаваемые и/или используемые в сценарии, содержатся в общей Рабочей области MATLAB Workspace. Для переменных функции существует свой собственный Workspace, в общий Workspace MATLAB ничего не попадает! Таким образом, скрипты более подходят для быстрых и разовых вычислений, более серьезные приложения в среде MATLAB рекомендуется разрабатывать в виде функций. См. примеры скриптов 1, 2 Синтаксис команд в Командном окне MATLAB, в файлах скриптов и функций одинаков.
11 Вызов функций в MATLAB [b1, b2, b3, b4 …] = my_function(a1, a2, a3, a4 …) Обращение к функции из Командного окна или в программах: выходные (возвращаемые) значения: переменные, возможно разных типов аргументы (входные значения): переменные, возможно разных типов имя функции Возможны функции без входных и/или выходных значений. Пример: bench Подобные можно вызывать при помощи контекстного меню в MATLAB. Пример: y= sin( [1:10] ) - здесь ОДИН аргумент (массив) и одно выходное значение! Если вызывать функцию, не указывая явно выходных переменных, первое выходное значение запишется в ans.
12 Варианты вызова функций Пример 1: функция clear для удаления переменных из Рабочей области MATLAB или какой-либо функции Стандартная запись для вызова: clear('a', 'b', 'c') – удалить 3 переменные из Workspace по их именам Упрощенная запись для вызова (только если все переменные – типа char): clear a b c Пример 2: функция sin >> sin(1) ans= 0.841470984807897 >> sin 1 ??? Undefined function or method 'sin' for input arguments of type 'char'.
13 Файлы функций. Подфункции function c=myfun(a,b) % заголовок: help c=subfun(a)/subfun(b); % вызов подфункции % подфункция function d=subfun(a) d=sum(a)^3; myfun.m Название головной функции в файле и имя файла должны совпадать!
14 Встроенный редактор файлов Editor 1. Поддержка файлов: MATLAB, С, HTML… 2. Работа с подфункциями и частями кода (%%) 3. Встроенный отладчик
15 Анализатор кода Проверяет код пользователя на наличие проблем и рекомендует необходимые изменения для оптимизации и увеличения быстродействия.
16 Подключение программ к системе MATLAB 1. Работа в текущей папке (Current Directory) – отладка, разовые вычисления …
17 Примеры программирования в MATLAB Конструкции if-else, switch-case, try-catch (см. примеры 1, 2) Циклы for-end, while-break (3, 4) Встроенные математические функции (min, max, sum, sin, sqrt…) (5) Матричные вычисления, транспонирование (6), операции умножения, деления, различие команд * и .*, решение систем линейных уравнений через детерминанты и напрямую Работа с текстовыми файлами (uigetfile, textread, dlmread) (7) Работа с Workspace (who, whos, save, load, evalin, assignin), различие общей рабочей области и раб. области каждой функции (8) Вызов функции из строки – команда eval (9) Переменное количество входов и выходов функции (ключевые слова varargin, varargout, nargin, nargout) (10)
18 Матричные вычисления Отличительная черта MATLAB: язык ориентирован на операции с матрицами! Каждое число – матрица единичного размера. 2. Вычисления в одной строке: B=A^3–2*A^(1/3) 3. Решение системы линейных уравнений A*X=B: X=inv(A)*B 1. Векторные и базовые матричные операции, встроенные функции: transpose, eig, det, inv Пример: s=eig(A); det(A-s(2)*eye(2))
19 Векторизация кода 1. Встроенные функции работают с векторами и матрицами: x=1:10, y=sin(x) 2. Добавление к матрице числа: A=[1 2; 3 5]; B=A+1 3. Поэлементные операции (нестандартные матричные операции!): умножение: .* деление: ./ – прямое, .\ – обратный порядок возведение в степень: .^ for k=1:N, c(k)=a(k)/b(k); end c=a./b запись короче, вычисления быстрее!
20 Предварительное задание переменных for k=1:3 for m=1:7 A(k,m)=0; B(k,m)=1; C(k,m)=rand; end end A=zeros(3,7); B= ones(3,7); C= rand(3,7); 1. Встроенные функции задания матриц:
21 Выбор имен для функций и переменных Встроенные функции MATLAB, >1000, с “говорящими” названиями: примеры: min, max, sum, sqrt, num2str, numel, size, dot, cross (открытый код!) Общие принципы задания имен: Понятное назначение, легкость запоминания и поиска! Не должно быть совпадений со встроенными функциями MATLAB (типа min, max, … проверка: which –all …) и системными переменными (i, j, pi …)
22 Пример выбора идентификаторов Имя переменой может описывать какую-либо ее особенность. Примеры: mrowX, mcolY – для работы со строками и столбцами матриц; Alpha_deg, BetaRad – для контроля ед. измерения в инженерных расчетах. Широко используемый пример: Венгерская нотация – соглашение об именовании переменных, констант и прочих идентификаторов в коде программ. Суть: имена идентификаторов предваряются заранее оговоренными префиксами, состоящими из одного или нескольких символов. При этом, как правило, ни само наличие префиксов, ни их написание не являются требованием языков программирования, и у каждого программиста (или коллектива программистов) могут быть своими.
23 Интерпретатор языка MATLAB Транслятор (translator) — это программа-переводчик. Преобразует программу, написанную на одном из языков высокого уровня, в программу, состоящую из машинных команд. Откомпилированные программы работают быстрее (С), но интерпретируемые проще исправлять и изменять (MATLAB).
2634-chasty_02_sc.ppt
- Количество слайдов: 23