АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

M-файли

Більшість вбудованих функцій MATLAB зберігаються у так званих M-файлах (файлах з розширенням.m), які містять команди мови MATLAB. Користувач може створити свою власну функцію, сформувавши для цього відповідний М-файл у редакторі M-файлів. Даний редактор викликається з головного меню MATLAB командами File ® New ® M-file, або з командного рядка – командою edit, після якої через пробіл можна вказати ім’я М-файлу. До створеної користувачем функції можна звертатись таким же чином, як і до вбудованих функцій.

Розрізняють два типи M-файлів: сценарії та функції.

Файли-сценарії містять послідовність команд середовища MATLAB. Можуть мати довільну назву, обов’язковим є тільки розширення.m. Викликається сценарій введенням назви імені файлу в командному рядку. Сценарії не приймають та не повертають ніяких аргументів, вони оперують існуючими змінними в робочій області (глобальними) та можуть самі створювати нові змінні, що залишаються в Workspace. Типовим випадком використання сценаріїв є запис команд у М-файл, замість їх введення у командному рядку.

Файли-функції можуть мати вхідні та вихідні аргументи. Ім’я функції та М-файлу (з розширенням.m) повинні співпадати. Змінні, що використовуються в М-функціях по замовчуванню є локальними, хоча існує можливість оголошення глобальних змінних. Структура функції має вигляд:

function [вихідні аргументи]=ім’я функції(вхідні аргументи)

% Основний коментар

% Додатковий коментар

Тіло функції (виконуваний код)

Перший рядок містить оголошення списку вихідних аргументів (записаних через кому), імені функції та вхідних аргументів (записаних через кому). Без такого рядка файл буде сприйматись як сценарій, а не як функція. Для позначення змінних можна використовувати різні літери і для назви функцій – різні імена (але назва функції та М-файлу повинні співпадати!). Оскільки всі змінні в функції є локальними, то їх імена не впливають на імена та значення змінних у робочій області.

Наступні після заголовку функції рядки, що починаються з символу %, є коментарями. Вони надають довідкову інформацію про призначення даної функції, формати звернення до неї і т.і. Ці рядки виводяться в командне вікно після введення команди допомоги

>> help ім’я функції

Перший рядок (основний коментар) відображається також при використанні команди lookfor.

Приклад В.12. Визначимо функцію f (x) = 1 + x – x 2 / 4 в M-файлі з ім’ям f.m. В редакторі M-файлів вона записується наступним чином:

function y=f(x)

y=1+x-x.^2/4;

Функцію, одного разу збережену в М-файлі, можна викликати в командному вікні MATLAB так само, як і будь-яку іншу функцію. Наприклад, щоб обчислити достатньо ввести в командному рядку:

>> cos(f(3))

ans =

-0.1782

Зауважимо, що завдяки використанню поелементних операцій, вхідним аргументом функції f може бути не тільки одне число, але й вектор. Результатом обчислень в такому випадку також буде вектор:

>> x=[0 2 3];

>> f(x)

ans =

1.0000 2.0000 1.7500

М-файл може містити в собі не одну, а декілька функцій зі своїми вхідними та вихідними аргументами. В такому випадку основною є функція, записана на початку файлу, її ім’я повинно співпадати з ім’ям М-файлу. Всі інші функції, розташовані нижче основної функції, називаються підфункціями, і є допоміжними. Змінні, визначені в підфункції, є локальними, вони доступні тільки в межах цієї підфункції. Основна функція обмінюється даними з підфункціями за допомогою вхідних та вихідних аргументів.

Приклад В.13. Обчислити суму .

Введемо в редакторі наступні функції та збережемо їх у M-файлі з ім’ям suma.m:

function S=suma(n)

S=0;

for k=1:n

S=S+1/fact(k);

end

 

function f=fact(n)

%підфункція для обчислення n!

f=1;

for i=1:n

f=f*i;

end

Тут suma – основна функція, а fact – допоміжна підфункція, призначена для обчислення факторіалу. Звертатись до функції fact можна лише в межах М-файлу suma.m, на відміну від функції suma, яка є доступною для всіх інших функцій MATLAB.

Щоб знайти значення суми при , достатньо ввести:

>> suma(5)

ans =

1.7167

Вхідними та вихідними аргументами функцій, окрім чисел та векторів, можуть бути також і матриці.

Приклад В.14. Знайти суму та добуток всіх додатних елементів заданої матриці.

Введемо наступну функцію в редакторі М-файлів та збережемо її у файлі з ім’ям posdob.m:

function [S,D]=posdob(A)

S=0;

D=1;

[n,m]=size(A);

for i=1:n

for j=1:m

if A(i,j)>0

S=S+A(i,j);

D=D*A(i,j);

end

end

end

Тут size(A) – вбудована функція для визначення розміру матриці A: n – кількість рядків, m – кількість стовпчиків. В MATLAB також є вбудована функція length(x), яка знаходить довжину вектора x.

Знайдемо суму та добуток додатних елементів матриці :

>> B=[0 -1; 5 8];

>> [S,D]=posdob(B)

S =

D =

Якщо при зверненні до функції posdob не вказати жодного вихідного аргументу, або вказати лише один аргумент, то результатом буде сума додатних елементів матриці (тобто значення змінної, що стоїть першою у списку вихідних аргументів).

Часто в ході виконання М-функцій необхідно вивести те чи інше повідомлення (наприклад, про помилку чи попереджуюче) в командне вікно, чи ввести додаткові дані. Для взаємодії з користувачем в MATLAB існує декілька вбудованих функцій:

– warning('Текст попереджуючого повідомлення') – виводить текст попереджуючого повідомлення у командне вікно;

– error('Текст повідомлення про помилку') – виводить текст повідомлення про помилку в командне вікно та коректно завершує виконання програми;

– disp(масив або рядок) – виведення проміжних результатів у командне вікно;

– змінна=input('Підказка')–введення з клавіатури значення змінної.


1 | 2 | 3 | 4 | 5 | 6 | 7 |

Поиск по сайту:



Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.005 сек.)