Слайд 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).