Случайные числа. Автоматизированный подход. Отладка (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 Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|