Лекции.Орг


Поиск:




Категории:

Астрономия
Биология
География
Другие языки
Интернет
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Механика
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Транспорт
Физика
Философия
Финансы
Химия
Экология
Экономика
Электроника

 

 

 

 


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

15 1 2 12

4 10 9 7

8 6 5 11

3 13 14 0

mx1 =

Задание.

— Для магической матрицы размера 5´5 подсчитать сумму ее диагональных элементов. Подсчитать также суммы элементов каждой строки и каждого столбца.

— Определить с помощью оператора max максимальный элемент магической матрицы размера 5´5.

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

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

ВНИМАНИЕ!!!

Вновь создаваемым М-файлам в виде

М-функций не присваивать имена встроенных функций

Системы MATLAB.

 

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

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

 

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

Тело М-функции состоит из инструкций М-языка, с помощью которых в итоге вычисляются возвращаемые значения. Тело М-функции следует за заголовком функции. Заголовок функции плюс тело функции в совокупности составляют определение М-функции.

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

2. Примеры односложных М-функций.

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

, где — действительные числа.

В текстовом редакторе MATLAB создаем следующий М-файл в виде М-функции:

function с=fun1(a,b);

% a, b -входные параметры, с - выходное значение

c=sqrt(a^2+b^2);

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

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

Для примера 3.2.1 в командном окне выполним следующие действия. Сначала наберем fun1, затем в круглых скобках наберем входные параметры (аргументы) для вычислений — числа 3 и 4.

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

ans=

5 % результат выполнения М-функции fun1 с входными аргументами 3 и 4

Другой способ использования созданной функции fun1:

>> a=3; b=4;

>> fun1(a,b)

ans=

С присвоением результата, например, через z1

>> z1=fun1(a,b)

z1=

Пример 3.2.2. Пример сложной М-функции. В сложной функции выделяют основную функцию, к которой происходит обращение, и вспомогательную функцию или подфункцию.

function c2=fun2(x1,x2,x3)

c2=x1.*x2

Fun3(x3)

function c3=fun3(y)

c3=y.^2

В командном окне или в М-сценарии можно обратиться только к функции fun2, задав предварительно переменные х1, х2, х3. Результат обращения к функции fun2 может быть следующим:

>> x1=[1 2;3 4];x2=[4 3;2 1];x3=[2 2;3 3];fun2(x1,x2,x3)

c2 =

4 6

6 4

c3 =

4 4

9 9

ans =

4 4

9 9

ans =

4 6

6 4

Следует отметить, что выводимые на экране переменные с2 и с3 — это только результат выполнения М-функций и в рабочем пространстве MATLAB они не определены. При обращении к переменным с2 или с3 получим следующее сообщение:

>> c2

??? Undefined function or variable 'c2'.

>> c3

??? Undefined function or variable 'c3'.

В сообщении указывается, что неизвестна функция или переменная с2 в первом случае и с3 во втором случае. Передать результат действия в рабочее пространство можно только для основной функции, сделав присвоение результат обращения к функции fun2:

>> x1=[1 2;3 4];x2=[4 3;2 1];x3=[2 2;3 3];z2=fun2(x1,x2,x3)

c2 =

4 6

6 4

c3 =

4 4

9 9

ans =

4 4

9 9

z2 =

4 6

6 4

При обращении в командной строке MATLAB к переменной z2 получим:

>> z2

z2 =

4 6

6 4

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

>> x1=[1 2;3 4];x2=[4 3;2 1];x3=[2 2;3 3];fun2(x1,x2,x3)

ans =

4 6

6 4

Как видно, результат действия вспомогательной функции fun3 на экран не выводится.

Задание.

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

— Создать М-сценарий с обращением к М-функции 1-го пункта задания.

Пример 3.2.3. Пример сложной функции с двумя выходными значениями. Изменим предыдущий пример, описав М-функцию fun2 в следующем виде:

function [c2,c22]=fun2(x1,x2,x3)

c2=x1.*x2

c22=x1.*x2+fun3(x3)

function [c3,c33]=fun3(y)

c3=y.^2

c33=y

Обратившись из командного окна к fun2, получим

>> x1=[1 2;3 4];x2=[4 3;2 1];x3=[2 2;3 3];[z2,z22]=fun2(x1,x2,x3)

c2 =

4 6

6 4

c3 =

4 4

9 9

c33 =

2 2

3 3

c22 =

8 10

15 13

z2 =

4 6

6 4

z22 =

8 10

15 13

Если в М-файле после выражений, определяющих с2 и с22, поставить точку с запятой, то получим:

>> x1=[1 2;3 4];x2=[4 3;2 1];x3=[2 2;3 3];[z2,z22]=fun2(x1,x2,x3)

c3 =

4 4

9 9

c33 =

2 2

3 3

z2 =

4 6

6 4

z22 =

8 10

15 13

Значения z2 и z22 имеют результат вычисления с2 и с22 в теле основной функции fun2. Результаты вычислений с3 и с33, выполненные в теле вспомогательной функции fun3, недоступны в рабочем пространстве MATLAB. Чтобы получить доступ к результатам вычислений функции fun3 видоизменим М-файл следующим образом:

function [c2,c22,w2,w22]=fun2(x1,x2,x3)

c2=x1.*x2;

c22=x1.*x2+fun3(x3);

[w2,w22]=fun3(x3)

function [c3,c33]=fun3(y)

c3=y.^2

c33=y

При обращении из командного окна (или в М-сценарии) к М-функции fun2 предусмотрим дополнительный вывод значений:

>> x1=[1 2;3 4];x2=[4 3;2 1];x3=[2 2;3 3];

>> [z2,z22,w1,w11]=fun2(x1,x2,x3)

c3 =

4 4

9 9

c33 =

2 2

3 3

c3 =

4 4

9 9

c33 =

2 2

3 3

w2 =

4 4

9 9

w22 =

2 2

3 3

z2 =

4 6

6 4

z22 =

8 10

15 13

w1 =

4 4

9 9

w11 =

2 2

3 3

Теперь доступ к результатам с3 и с33 осуществляется через w1 и w11:

>> w1

w1 =

4 4

9 9

>> w11

w11 =

2 2

3 3

Если в М-файле после вычислений проставить точку с запятой, то получим значения, определенные при обращении к функции fun2:

>> [z2,z22,w1,w11]=fun2(x1,x2,x3)

z2 =

4 6

6 4

z22 =

8 10

15 13

w1 =

4 4

9 9

w11 =

2 2

3 3

 

Пример 3.2.4. Пример функции со встроенной подфункцией по обработке вектора Х.

Для данного вектора чисел определить его среднее и среднее квадратичное отклонение.

Создадим М-файл в виде сложной М-функции:

function [m,s]=statv(X)

n=length(X); %Длина вектора

m=avg(X,n);

s=sqrt(sum((X-avg(X,n)).^2)/(n-1)); % Вычисление среднего квадрат. отклонения

%--------------------------------

function mm=avg(X,n)

mm=sum(X)/n; % Среднее значение вектора

 

Обратимся к созданной М-функции под именем statv из командного окна, задав предварительно числовой вектор.

>> W=[1 2 3 4 2 1 3 4];

>> [m,s]=statv(W)

m =

2.5000

s =

1.1952

Получили, что среднее значение вектора W равно 2.5, а среднее квадратичное отклонение равно 1.1952.

Полученный результат проверим с помощью встроенных функций MATLAB:

>> mean(W) % Вычисление среднего значения

ans =

2.5000

>> std(W) % Вычисление среднего квадратичного отклонения

ans =

1.1952

При обращении к помощи по созданной функции выводятся комментарии тела основной функции:

>> help statv

---------------------------------------

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

Задание к примеру 3.2.4.

— Для заданного вектора W рассчитать "вручную" его среднее значение и среднее квадратичное отклонение.

— Обратиться к созданной М-функции без специального вывода выходных величин.

— В качестве вектора принять вектор случайных чисел длиной 100000 (задать с помощью rand). Вычислить статистические характеристики вектора с помощью созданной М-функции. Полученный результат сравнить с теоретическими значениями математического ожидания и среднего квадратичного отклонения для случайной величины, равномерно распределенной в интервале [0, 1].



<== предыдущая лекция | следующая лекция ==>
Дополнительные условия в транспортных задачах | Краткие теоретические сведения. Центровка валов машин и агрегатов
Поделиться с друзьями:


Дата добавления: 2016-09-03; Мы поможем в написании ваших работ!; просмотров: 243 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Лаской почти всегда добьешься больше, чем грубой силой. © Неизвестно
==> читать все изречения...

2427 - | 2304 -


© 2015-2025 lektsii.org - Контакты - Последнее добавление

Ген: 0.011 с.