Уничтожение определений переменных
Для очистки рабочей области, занимаемой под переменную, используется функция clear в разных форматах, например:,
clear – уничтожение определений всех переменных;
clear x – уничтожение определения переменной х;
clear a,b,c – уничтожение определений нескольких переменных.
Уничтоженная переменная становится неопределенной и ее использование невозможно, всякие попытки обращения к ней будут сопровождаться сообщениями об ошибке.
4.5. Функции
Функции преобразуют одни данные в другие. Функции возвращают значения в ответ на обращение к ним с указанием списка входных параметров – аргументов:
- численное,
- символьное (формулу),
- вектор или матрицу.
В MATLAB различают следующие виды функций
- встроенные – внутренние ( sin(x), exp(y) ),
- вешние – свои определения в m-файлах (sh(x) ),
- m – функциями (функциями пользователя)
Встроенная функция (или просто функция) – это объект со стандартным именем, предназначенный для выполнения действий с параметрами (аргументами), заключенными в круглые скобки
Записываются функции строчными буквами в виде:
<f_name>(список_параметров)
Обращение к функции:
>> y=cos(x);
4.6. Двойственность операторов, команд и функций в MATLAB
Для языка системы MATLAB различие между командами и операторами является условным, т.к. они могут выполняться как из программы, так и в режиме прямых вычислений. Оператор – это специальное обозначение для определенной операции над данными – операндами. Простейшие операторы + - * / ,
|
|
Список операторов можно получить командой >> help ops
В MATLAB определены две группы арифметических операторов.
1. Операции выполняется по правилам матричной алгебры, когда результат зависит от порядка следования операндов.
2. Из операндов компоненты извлекаются по очереди и осуществляются операции по правилам линейной алгебры. Для этих операций в оператор добавляется символ точка (.) перед символом операции.
Операции сложения и вычитания по правилам матричной и линейной алгебры дают одинаковый результат, поэтому для них символточканеупотребляется.
Применение оператора :
Оператор : - позволяет формировать упорядоченные числовые последовательности
Для создания списка используется запись:
<начальное_значение>:<шаг>:<конечное_значение>
>> 1 : 5 % шаг =1
ans =
1 2 3 4 5
>> i= 0 : 2 : 10 % шаг =2
ans =
0 2 4 6 8 10
>> V=[ 0 : pi/2 : 2*pi ]; % шаг = pi/2
>> V
V =
0 1.5708 3.1416 4.7124 6.2832
Двойственность операторов и функций: многие операторы имеют свои аналоги в виде функций.
Список элементарных функций можно получить командой >> help elfun,
|
|
А список специальных функций командой >> help specfun.
В системе MATLAB определены указанные ниже функции. Функция, примененная к массиву, возвращает значения для каждого элемента массива. Входной массив допускает комплексные значения. Углы в большинстве функций в радианах.
4.7 Арифметические матричные операторы и функции MATLAB
В MATLAB для выполнения операций можно использовать операторы или функции. Для одних операций определены только операторы, для других только функции, для третьих можно использовать и операторы и функции.
В MATLAB предусмотрены три категории операторов:
- Арифметические. Используются с численными данными.
- Условные. Используются для сравнения.
- Логические. Осуществляют операции над данными логического типа
4.7.1. Арифметические матричные операторы и функции MATLAB
Оператор | Функция | Описание |
A + B | plus(A,B) | Сложение. A, B должны быть одинакового размера. |
+ A | uplus(A) | Унарный плюс. |
A – B | minus(A,B) | Вычитание. A, B должны быть одинакового размера. |
– A | uminus(A) | Унарный минус. |
A * B | mtimes(A,B) | Матричное умножение. |
A .* B | times(A,B) | Поэлементное умножение массивов. |
A / B | mrdivide(A,B) | Деление матриц слева на право. A делится на B. Тот же результат дает A*inv(B). |
A ./ B | rdivide(A,B) | Поэлементное деление массивов слева на право. (A/B) |
A \ B | mldivide(A,B) | Обратное деление матриц справа на лево. B делится на A.. Тот же результат дает inv(A)*B. |
A .\ B | ldivide(A,B) | Поэлементное деление массивов справа на лево. (B/A) |
A ^ B | mpower(A,B) | Возведение матрицы в степень. A возводится в степень B. |
A .^ B | power(A,B) | Поэлементное возведение массива в степень. |
A ′ | ctranspose(A) | Транспонирование матрицы. |
A . ′ | transpose(A) | Транспонирование массива. |
A : H : B A : B | colon(A,H,B) colon(A,B) | Список от A до B с шагом H. Список от A до B с шагом 1. |
Примеры:
|
|
>> A=[1 2 3]; % Задание вектора A
>> B=[4 5 6]; % Задание вектора B
>> B–A % Вычитание двух векторов
ans =
3 3 3
>> minus(B, A)
ans =
3 3 3
>> A.^2 % Поэлементное возведение в степень вектора А
ans =
1 4 9
>> A.\B
ans =
4.0000 2.5000 2.0000
При вычислении:
- Для ввода исходных данных используется символ >>
- Данные вводятся с клавиатуры в редактор
- Для блокировки вывода результата вычислений выражения после него надо установить знак ; (точка с запятой)
|
|
- Если не указана переменная со значением результата вычислений, то система именует ее ans
- Знаком присвоения является знак =
- Встроенные функции записываются строчными латинскими буквами и их аргументы указываются в круглых скобках
- Диалог происходит в силе «задал вопрос - получил ответ».
4.7.2. Условные операторы
Для сравнения двух величин и выполнения операций отношения служат операторы отношения
Оператор | Функция | Описание |
x==y | eq(x,y) | x Равно y |
x~=y | ne(x,y) | x Не равно y |
х<y | lt(x,y) | x Меньше чем y |
x>y | gt(x,y) | x Больше чем y |
x<=y | le(x,y) | x Меньше или равно y |
x>=y | ge(x,y) | x Больше или равно y |
Операндами являются не только числа, но и векторы, матрицы и массивы. Операторы отношения сравнивают два массива одного размера и выдают результат в виде массива того же размера.
>> M=[-1 0; 1 3]; % Задание матрицы
M =
-1 0
1 3
>> M>=0 % Сравнение элементов матрицы М
ans =
0 1
1 1
4.7.3. Логические операторы
Логические операторы и соответствующие им функции служат для реализации поэлементных логических операций над элементами одинаковых по размеру массивов.
Оператор | Функция | Описание |
x&y | and(x,y) | И (AND) |
x|y | or(x,y) | Логическое ИЛИ (OR) |
x~y | not(x,y) | Логическое НЕ (NOT) |
x xor y | xor(x,y) | Операция «Исключающее ИЛИ», (сложение по модулю 2) |
>> A=[1,1,1];
>> D=[1,0,0];
>> and(A,D)
ans =
1 0 0
>> A|D
ans =
1 1 1
4.8 Встроенные функции
Со списком функций можно ознакомиться, выполнив команды:
help elfun элементарные функции,
help specfun специальные функции.
Встроенные функции хранятся в откомпилированном ядре системы MATLAB и выполняются предельно быстро.
Тригонометрические функции
Функция | Описание |
sin(X) | Синус |
cos (X) | Косинус |
tan(X) | Тангенс |
cot (X) | Котангенс |
sec(X) | Секанс |
csc(X) | Косеканс |
Обратные тригонометрические функции.
Функция | Описание |
asin(X) asind (X) | Обратный синус. То же самое, но результат в градусах. |
acos (X) acosd (X) | Обратный косинус. То же самое, но результат в градусах. |
atan(X) atand(X) | Обратный тангенс. Результат в квадрантах 1 и 4. То же самое, но результат в градусах |
acot (X) acotd (X) | Обратный котангенс. То же самое, но результат в градусах. |
asec(X) asecd(X) | Обратный секанс. То же самое, но результат в градусах. |
acsc(X) acscd(X) | Обратный косеканс. То же самое, но результат в градусах. |
Гиперболические функции.
Функция | Описание |
sinh(X) | Синус гиперболический. |
cosh (X) | Косинус гиперболический. |
tanh(X) | Тангенс гиперболический. |
coth (X) | Котангенс гиперболический. |
sech(X) | Секанс гиперболический. |
csch(X) | Косеканс гиперболический. |
Обратные гиперболические функции.
Функция | Описание |
asinh(X) | Обратный синус гиперболический. |
acosh (X) | Обратный косинус гиперболический. |
atanh(X) | Обратный тангенс гиперболический. |
acoth (X) | Обратный котангенс гиперболический. |
asech(X) | Обратный секанс гиперболический. |
acsch(X) | Обратный косеканс гиперболический. |
Степени, корни, логарифмы
Функция | Описание |
pow2(X) | 2 в степени X. |
realpow(X,Y) | X в степени Y. |
sqrt(X) | Квадратный корень из Х.. |
realsqrt(X) | Квадратный корень из неотрицат. вещественного Х.. |
nthroot (X) | Вещественный n-ый корень из Х. |
exp(X) | Экспонента от Х. |
expm1(X) | Экспонента от Х минус 1. |
log(X) | Натуральный логарифм от Х. |
reallog(X) | Натуральный логарифм от неотрицат. вещественного Х. |
log2(X) | Логарифм от Х по основанию 2. |
log10(X) | Логарифм от Х по основанию 10. |
Функции комплексных чисел
Функция | Описание |
abs(X) | Абсолютное значение Х |
angle(Z) | Угол Z в радианах |
complex(a,b) | Возвращает комплексное число (a - вещественная часть, b – мнимая часть) |
conj(X) | Сопряженное комплексное число. |
Статистические функции
Функция | Описание |
sum(X) | Возвращает сумму элементов вектора Х |
max(X) | Возвращает максимальное значение элементов вектора Х |
min(X) | Возвращает минимальное значение элементов вектора Х |
mean(X) | Возвращает среднее ариф. значение элементов вектора Х |
sort(X) | Сортировка элементов X. |
sortrows(X) | Сортировка строк X. |
Округления и остатки
Функция | Описание |
fix(X) | Целая часть Х. Округление с усечением дробной части числа >> [fix(1.7) fix(-1.7)] ans = 1 -1 |
floor(X) | Ближайшее к Х целое в сторону меньшую Округление с усечением дробной части положительного числа и округление до ближайшего целого отрицательного числа >> [floor(1.7) floor(-1.7)] ans = 1 -2 |
ceil(X) | Ближайшее к Х целое в сторону большую Округление с усечением дробной части отрицательного числа и округление до ближайшего целого положительного числа >> [ceil(1.7) ceil(-1.7)] ans = 2 -1 |
round(X) | Округление Х до ближайшего целого. >> [round(1.7) round(-1.7)] ans = 2 -2 |
mod(X,Y) | Остаток от целочисленного деления X на Y. >> mod(5,2) ans = 1 |
rem(X,Y) | Остаток от деления X на Y. >> rem(5,2) ans = 1 |
Функции преобразования систем счисления
Функция | Описание |
dec2hex(X) | Преобразование десятичного целого в шестнадцатеричное >> dec2hex(27) ans = 1B |
dec2bin (X) | Преобразование десятичного целого в двоичное >> dec2bin (6) ans = 110 |
bin2dec(X) | Преобразование двоичного целого в десятичное >> bin2dec('110') ans = 6 Двоичное число указывается в апострофах |
hex2dec (X) | Преобразование шестнадцатеричного целого в десятичное >> hex2dec ('1B') ans = 27 Шестнадцатеричное число указывается в апострофах |
Функции побитовых преобразований для неотрицательных целых чисел дают доступ к битам двоичного представления чисел.
Функция | Описание |
bitand(A,B) | Побитовая операция «И», логическое умножение. |
bitor(A,B) | Побитовая операция «ИЛИ», логическое сложение. |
bitcmp(A,N) | Побитовая операция «НЕ» для A, инверсия. N – Длина ответа. |
bitxor(A,B) | Побитовая операция «Исключающее ИЛИ», или сложение по модулю 2. |
Примеры:
>> a=14;
>> b=5;
Десятичное представление | Двоичное представление |
>> bitand(a,b) ans = 4 | >> dec2bin(bitand(a,b)) ans = 100 |
>> bitor(a,b) ans = 15 | >> dec2bin(bitor(a,b)) ans = 1111 |
>> bitxor(a,b) ans = 11 | >> dec2bin(bitxor(a,b)) ans = 1011 |
4.9 Функции пользователя
Несмотря на большое количество встроенных операторов, и функций (около 1000), пользователю всегда может понадобиться та или иная функция, отсутствующая в ядре.
Пример 1:
X=0 : 0.2 : 3; % задание вектора значений
Z=-abs(sin(2*X)); % задание функции пользователя Z
Y=cos(X.^3); % задание функции пользователя Y
Пример 2: применение функции inline, аргументом которой в апострофах задается выражение функции:
>> Z=inline('sin(x)^2+cos(y)^2')
Z =
Inline function:
Z(x,y) = sin(x)^2+cos(y)^2
Пример 3: задание функции в виде m-файла:
После сохранения функции под именем Z в командной строке можно вывести листинг созданной функции, а также вызвав функцию подсчитать возвращаемый результат:
Пример 4: задание handle-функции, в которой могут использоваться все объекты структурного программирования. Для этого используется единичный символ @.
>> fhs=@sin % функция, вычисляющая значение sinуса
fhs =
@sin
Для вычисления такой функции служит функция
Feval(fhandle, a1, a2,…), где а1, а2…список аргументов. Например,
>> feval(fhs,1) % функция, вычисляющая значение sinуса = 1
ans =
0.8415
К ней можно обращаться и строить, например, график.
>> plot(feval(fhs,0:0.1:2*pi))
4.10. Выражения
Выражение– это объект языка MATLAB, представляющий собой имеющую смысл совокупность констант, переменных и функций, объединенных символами операций.
Иначе, они задают то, что должно быть вычислено в численном или символьном виде.
Строятся на основе чисел, констант, переменных, операторов, функций, спецзнаков.
Различают следующие типы выражений:
· арифметические,
· логические,
· символьные.
Примеры арифметических выражений (имеющие арифметические операторы):
>> 2.3*sin(x);
>> 4+exp(3)/5;
>> sqrt(y)/2;
>> sin(pi/2);
Примеры логических выражений (операции отношения и логические операции):
>> (i==j) & (a+b) > sqrt(c)
Примеры символьных выражений (символьные константы, переменные, функции…)
>> X=char(‘abs’, ‘absolute’, ‘кот’, ‘кошка’)
4.11 Приоритетность выполнения операций в математических выражениях
1. круглые скобки,
2. операции транспонирования и возведения в степень ^,
3. унарные + и -, логическое отрицание,
4. арифметические операции умножения и деления * и /,
5. арифметические операции сложения и вычитания + и -,
6. оператор сечения массива,
7. операторы отношения (<, <=, >, >=, ==, ~=),
8. логические операторы «И» (&) и «ИЛИ» ( | ).
4.12 Сообщения об ошибках и исправление ошибок
При ошибочных действиях, ошибочном написании математических выражений или команд MATLAB диагностирует вводимые команды и выражения и выдает сообщение об ошибке или предупреждения символами красного цвета.
Например:
>> sqr(2)
??? Undefined function or method 'sqr'. % Функция 'sqr' не определена.
С помощью редактора и клавиш управления курсором ↓, ↑ , ← , → отыскивается нужная строка, подводится курсор к ошибочному месту и происходит корректировка введенной команды или выражения.
>> sqrt(2)
ans =
1.4142
4.13 Текстовые комментарии
Текстовые пояснения в программу вводятся, как комментарий. Он начинается с символа %, который располагается в первой позиции строки.
Комментарий – это текст! В него символы операций не включаются. Например,
% ввод исходных данных
% вывод графиков
Перенос строки в сессии
Если математическое выражение окажется слишком длинным, то его можно перенести на новую строку с использованием символов …
a = 1 - 1 / 2 + 1 / 3 – 1 / 4 + 1 / 5 …
– 1 / 6 + 1 / 7 – 1 / 8 + 1 / 9 – 1 / 10 ;
4.14 Формирование векторов и матриц
MATLAB – система, специально предназначенная для проведения сложных вычислений с векторами, матрицами и массивами, в том числе и многомерными. При этом по умолчанию предполагается, что каждая переменная – это вектор, матрица или массив.
1. Векторы вводятся в квадратных скобках, компоненты вектора разделяются пробелами. Например,
>> V=[1 2 4] % Задание вектора V
V =
1 2 4
Для указания одного элемента вектора используется выражение вида V(i), например
>> V(2) = 5; % Пере присвоение значения 2-го элемента вектора V
>> V
V =
1 5 4
>> V(3)
ans =
4
2. Матрицы вводятся в квадратных скобках, внутри которых размещаются векторы строк, разделенные знаком точка с запятой (;). Например,
>> M=[1 2 3; 4 5 6; 7 8 9] % Задание матрицы M
M =
1 2 3
4 5 6
7 8 9
Для указания одного элемента матрицы используется выражение вида M(I,j), например:
>> M(2,1)
ans =
4
4.15 Специальные символы
Оператор : - позволяет формировать упорядоченные числовые последовательности
Для создания списка используется запись:
<начальное_значение>:<шаг>:<конечное_значение>
>> 1 : 5 % шаг =1
ans =
1 2 3 4 5
>> i= 0 : 2 : 10 % шаг =2
ans =
0 2 4 6 8 10
>> V=[ 0 : pi/2 : 2*pi ]; % шаг = pi/2
>> V
V =
0 1.5708 3.1416 4.7124 6.2832
V( : ) % записывает все элементы массива V в виде столбца
ans =
0
1.5708
3.1416
4.7124
6.2832
Оператор : - формирование векторов и подматриц из векторов и матриц
Специальные символы и операторы
Оператор | Описание |
V(n) | вывод n – го элемента вектора V |
V(:) | вывод вектора в столбец |
V′ | транспонирование вектора / матрицы |
A(m,n) | вывод m,n – го элемента матрицы A |
A(m,:) | вывод строки m из матрицы А. |
A(:, n ) | вывод столбца n из матрицы А |
A(m,:) = [ ] | удаление строки m из матрицы А |
A(:,n) = [ ] | удаление столбца n из матрицы А |
M =
1 2 3
4 5 6
7 8 9
>> M(2,3)
ans =
6
>> M(2,:) % выводит 2 строку
ans =
4 5 6
>> M(2,:)=[ ] % удаляет 2-ю строку и формирует новую матрицу
M =
1 2 3
7 8 9
. . . продолжение строки в случае, если математическое выражение длинное и не размещается в одной строке.
4.16 Рабочая область памяти Workspace и команды who, whos, clear
В MAYLAB переменные текущей сессии сохраняются в рабочей области памяти Workspace (рабочее пространство). Рабочее окно содержит имена переменных (Name), значение или размер (Value) и максимальное и минимальные значения для массива данных:
Двойной щелчок по имени переменной (например, А) открывает окно редактирования этой переменной Variable Editor
В котором можно произвести редактирование данных выбранной переменной
Список текущих переменных Workspace выводится по команде:
>> who
Your variables are:
A ans b
Этот же список с дополнительными сведениями по команде:
>> whos
Name Size Bytes Class
A 2x3 48 double
ans 1x1 8 double
b 1x1 8 double
Полная очистка содержимого Workspace выполняется по команде:
>> clear
а удаление требуемых переменных по команде:
clear <имена переменных>
Например, для переменных А (массив 2x3 ) и b (скаляр 1x1) команда очистки области от них выглядит следующим образом:
>> clear(A,b)
4.17 Сохранение данных на диске и команды save, load
Для того, чтобы воспользоваться данными в другой сессии или в режиме программирования, данные текущей сессии можно сохранить на диске в файле с расширением mat по команде:
save <имя файла> <список переменных>
Например,
>> n=1:100; x=sin(0.5*pi.*n); y=cos(0.5*pi.*n);
>> save('nxy.mat', 'n', 'x', 'y');
Значения переменных n, x, y будет сохранено на диске в файле 'nxy.mat' в папке work.
По команде
load <имя файла>
выполняется обратная процедура – загрузка данных (mat-файла) с диска в рабочее пространство памяти Workspace
Например,
>> load ('nxy.mat')
4.18 Сохранение данных на диске в собственной папке
С целью систематизации сохранения лучше создать свою папку.
Создание своей папки производится в окне Current Folder (Directory)
Дата добавления: 2021-03-18; просмотров: 76; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!