Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Случайные числа. Автоматизированный подход. Отладка (debug) программ. 2. Статистические методы. Статистические операции. Среднее значение




Случайные числа

Ежели требуется создать собственный массив данных (для тестирования, например), можно делать это с помощью функции rand(), которая создаёт случайное число в интервале от 0 до 1 используя равномерный закон распределения. Кроме того, есть ещё функция randn(), которая делает то же самое, но с нормальным законом распределения, диапазон здесь примерно от -2 до +2 с наиболее вероятными значениями в области нуля. (ну как и должно быть в нормальном распределении)

Обе функции могут принимать аргументы. Если это одно число n - создаётся массив размерностью n x n. Если два числа m и n - то размерности m x n.

Для изменения диапазона результат умножают на соответствующее значение. Например, для создания случайных цифр в диапазоне 0 - +10 умножить на 10: 10*rand();

Для создания в диапазоне -5 - +5 умножить на 10 и вычесть 5: 10*rand()-5;

 

Автоматизированный подход

Eжели создаётся программа (скрипт) не для конкретного случая, а для работы с разными данными (например, разное число классов, разные размерности данных, ещё чего-нибудь) то каждый раз надобно будет изменять некоторые переменные по всей программе. Этот процесс можно автоматизировать. Основная требующаяся функция - eval(). Аргументом функции является текстовая строка, и функция просто выполняет то, что записано в этой строке. Например:

string_command = 'a = 10+15'; %команда в виде текста

eval(string_command)       %выполнить команду

В результате получим:

a =

25

В чём суть? В том, что значение текстовой строки можно изменять во время работы программы и обращаться к разным переменным внутри одного цикла.

Например, ежели есть несколько переменных a_1, a_2, a_3, то для обращения к ним можно использовать цикл:

for i=1: 3

  str_cmd = strcat('b = 10 + a_', int2str(i));

eval(str_cmd);

end

Здесь str_cmd - текстовая команда, функция; strcat() - функция, объединяющая несколько строк в одну (str от string - строка, cat от concatenation - объединение). Функция int2str() - переводит численную переменную в переменную типа char, т. е. в строку. Строка 'b = 10 +' - просто некоторое ничего не значащее арифметическое действие, где b - некая переменная. Таким образом, строка str_cmd на первой итерации будет выглядеть как: b = 10 + a_1 и на каждой итерации текстовая команда обращается к разной переменной.

 

Отладка (debug) программ

Зачастую написанная программа не работает как надо с первого раза (да и со второго тоже). Для установления точной причины неправильной работы можно запустить работу в режиме отладки. В этом режиме программа может прерываться в определённых точках кода, которые называются breakpoint, и во время остановок можно отследить как изменяются интересующие переменные. Для установки брейкпоинта достаточно тыкнуть мышкой в столбец, рядом со столбцом номеров строк.

Красная точка означает, что в этой строке установлен брейкпоинт. При запуске (зелёный треуголньик) программа начнёт работу и остановится на строке с брейкпоинтом, в этот момент можно проверить значения всех переменных на этом этапе.

Зелёная стрелка означает текущую строку, на которой остановилась программа. Дальнейшее управление выполнением программы производится с помощью появившихся кнопок (выделены красной рамкой на рисунке выше). Здесь наиболее важными являются: кнопка Step (F10) производит переход на следующую строку и остановку программы, Continue (F5) - продолжает выполнение программы до следующего брейкпоинта.

2. Статистические методы

Статистические операции

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

Среднее значение

Формула:

Например, для вектора последовательных значений X из 10 элементов среднее вычисляется:

X = [1: 10];      % Вектор из 10 элементов (1х10)

[row col] = size(X); % Определение числа элементов

sum_value = 0;      % Инициализация переменной

for i = 1: col    % Цикл по числу элементов

sum_value = sum_value + X(i); % Суммирование

end

mean_value = sum_value / col % Вычисление арифм. среднего

Результат:

ans =

5. 5000

Встроенная Matlab-функция mean(), которая делает то же самое:

mean_value = mean(X) % Вычисление среднего значения

Результат:

ans =

5. 5000

 

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...