Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
матлаб.docx
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
135 Кб
Скачать

Создание м-файлов в виде м-функций.

По определению файлы, которые содержат в себе языковые коды системы MATLAB, называются М-файлами. М-файлы могут быть функциональными (М-функциями), если они содержат аргументы (входные переменные) и создают выходные данные. М-файлы обеспечивают расширяемость среды MATLAB, позволяют добавлять новые функции (встроенные функции) к уже существующим функциям MATLAB. М - файлы типа М-функций представляют собой как и М-сценарии обычные текстовые файлы, которые создаются с помощью редактора файлов. Написание М-функции начинается с кючевого слов function.

Формат заголовка М - функции:

function [список выходных переменных] = <имя функции>(<список входных переменных>)

Примечание: список выходных переменных может быть условным, т.е просто символ. Сохранение М-файла как М-функции должно быть с именем, которое указывается в поле заголовка М-функции.

Пример 1. 

Создать М-файл  для вычисления следующего выражения:  , где  — числа или матрицы одинаковой размерности.

В текстовом редакторе MATLAB выполняем команду File-New-Function M-file и создаем следующий М-файл в виде М-функции:

Применение точки означает массивное возведение в квадрат.

Созданную М-функцию сохраним под именем  , которому редактор MATLAB добавит расширение ".m".

Обращение к функции fun1 может быть выполнено тремя способами.

1 Способ

Для примера 1 в командном окне выполним следующие действия:

введем fun1(3,4) (в качестве аргументов выбраны значения a=3,  b=4)

Получим следующий ответ: ans= 5       

2 Способ

Введем в командном окне:

a=3;  b=4;

fun1(a,b)

И получим ответ: ans=5

3 Способ

Воспользуемся функцией с присвоением результата,  например, через z.

Введем в командном окне:

z1=fun1(a,b)

Получаем: z1=5

Пример 2.

Вычисление факториалов: 

n  — количество сомножителей.

Создадим следующую М-функцию под именем fact1.m:

Вычисление n-факториал:

function  f1=fact1(n)

f1=prod(1:n);

Примечание. Функция prod в свою очередь является встроенной функцией MATLAB.

Для примера вычислим  :

fact1(4)

ans= 24

или иным путем:

n=4;

fact1(n)

ans=24

Другие функции matlab

calendar

Функция calendar выводит в командное окно календарь на текущий месяц в виде таблицы из семи столбцов.

>> calendar

Apr 2005

S M Tu W Th F S

0 0 0 0 0 1 2

3 4 5 6 7 8 9

10 11 12 13 14 15 16

17 18 19 20 21 22 23

24 25 26 27 28 29 30

0 0 0 0 0 0 0

Чтобы отобразить календарь какого-либо другого месяца и года, нужно задать функцию

calendar с двумя аргументами (первый из них будет означать год, а второй- номер месяца). Например, отобразим календарь на март 2005 года.

calendar(2005,3)

Mar 2005

S M Tu W Th F S

0 0 1 2 3 4 5

6 7 8 9 10 11 12

13 14 15 16 17 18 19

20 21 22 23 24 25 26

27 28 29 30 31 0 0

0 0 0 0 0 0 0

diap

Создает массив

Пример, создающий одномерный массив чисел в диапазоне от 0 до 10

diap=0:0.1:10

help

Полный список операторов можно получить, используя команду help ops. Постепенно мы рассмотрим все операторы системы MATLAB и обсудим особенности их применения. А пока приведем только часть полного списка операторов, содержащую арифметические операторы:

>> help ops

Plus

Plus

+

Uplus

Unary plus

+

Minus

Minus

-

Umlnus

Unary minus

-

Mtimes

Matrix multiply

*

times

Array multiply

*

mpower

Matrix power

^

poWer

Array power

.^

mldivide

Backslash or left matrix divide

\

mrdivide

Slash or right matrix divide

/

Idivide

Left array divide

.\

rdivide

Right array divide

./

kron

Kronecker tensor product

kron

Со списком элементарных функций можно ознакомиться, выполнив команду help elfun,

а со списком специальных функций – с помощью команды help specfun.

Функция eval ('выражение') интерпретирует и вычисляет текстовую строку, которая может содержать либо арифметическое выражение, либо инструкцию, либо обращение к функции

Примеры

Вычислим текущее время t:

format rational

eval('t = clock')

t = 1997 12 7 17 24 241/100

Следующий программный код позволяет сформировать матрицу Гильберта порядка n:

t = '1/(i + j-1)';

n = 4;

for i = 1:n

for j = 1:n

G(i, j) = eval(t);

end

end

format rational

G

G =

1 1/2 1/3 1/4

1/2 1/3 1/4 1/5

1/3 1/4 1/5 1/6

1/4 1/5 1/6 1/7

intersect

intersect - пересечение множеств для двух векторов а и b, т. е., общие элементы векторов а и b. Результирующий вектор отсортирован по возрастанию.

a=[1 2 3 4]

b=[3 4 5]

Ans=[3 4]

setdiff

setdiff-разность множеств т. е., те элементы вектора а, которые не содержатся в векторе b. Результирующий вектор сортируется по возрастанию

a=[1 2 3 4]

b=[3 4 5]

setdiff(a,b)

setdiff(b,a)

ans=[1 2]

ans=[5]

union - объединение множеств

union(a, b)

a=[1 2 3 4]

b=[3 4 5]

ans=[1 2 3 4 5]

unique - удаление из множеств одинаковых элементов

unique[1 2 3 4 5 2 4]

ans=[1 2 3 4 5]