В официальной документации к Матлаб синтаксис цикла «for» описан таким образом:
Syntax
for index = values
program statemens
end
Если перевести на русский язык описание цикла, то получаем следующее:
Syntax
for =
end
Рассмотрим несколько простых примеров использования цикла «for» в Матлаб.
for d = 100: 1.0: 0.0
disp(d)
end
В этом примере мы запустили цикл, при котором программа будет перебирать числа от 100 до 0 с шагом 1 и выводить их на экран. Программа начнет отсчет со 100 и остановится на 0.
Еще один просто й пример использования цикла «for»:
Syntax
d = [3 6 5 3 6 9 5 3 1 0];
n = d(1);
for i=1:length(d)
if n
n = d(i);
end
end
disp(n)
В этом цикле мы запускаем счетчик «i» и меняем его значение от 1 до 10 с шагом 1. Результат выводим на экран.
Вообще, цикл «for» в Матлаб часто используется в тех случаях, когда нужно перебирать числовые значения в определенном диапазоне с определенным шагом.
Алгоритм поиска по шаблону в MATLAB. Global Optimization Toolbox
Цикл «while. end» в Матлаб
В официальной документации к Матлаб можно найти такой шаблон цикла «while. end»:
Syntax
while expression
program statements
end
Если перевести на русский и понятный язык это описание цикла, то получим следующее:
Syntax
while
end
Рассмотрим простой пример использования цикла «while. end» в Матлаб:
Syntax
exp = 100;
while exp > 1
exp = exp-1
end
В этом примере мы имеем цикл «while. end», который будет выполнять действие «exp=exp-1» до тех пор, пока соблюдается условие «exp>1». Таким образом, мы получаем цикл, который будет работать до тех пор, пока соблюдаются условия цикла. Как только условия станут ложными, работоспособность цикла сразу прервется.
Что такое «zeros» в Матлаб?
- векторы — формируются односоставными массивами;
- матрицы — формируются двусоставными массивами;
- тензоры — формируются многосоставными массивами.
- «zeros» — генерирует хранилище, состоящее из нулей;
- «ones» — генерирует хранилище, состоящее из единиц;
- «eye» — генерирует матрицу, состоящую из единиц;
- «rand» — генерирует хранилище компонентов, распределяемых по равномерному принципу;
- «randn» — генерирует хранилище компонентов, распределяемых по нормальному принципу;
- «cross» — реализует произведение нескольких векторов;
- «kron» — реализует произведение тензоров;
- «linspace» — генерирует однолинейное хранилище из равноотстоящих компонентов;
- «logsoace» — генерирует компоненты логарифмической решетки;
- «meshgrid» — генерирует компоненты двусоставной и трехсоставной решетки;
- «:» — формирует векторы и подматрицы.
Заключение
Матлаб, хоть и специфический, но очень интересный язык программирования. Его нет смысла изучать, если вы хотите программировать приложения или веб-сайты. Но если вам нужно проанализировать какие-то технические данные и вывести их понятным графиком, то Матлаб — это то, что нужно.
Создание GUI в MATLAB
Сегодня мы рассмотрели какие циклы бывают в Матлаб, а также что такое «zeros». В следующих статьях мы продолжим изучение этого языка.
Циклы и условия: if, switch, for, while
Доброго времени суток. Сегодня речь пойдёт о циклах и условиях в Matlab. Материал, который взят за основу — это help в Matlab и несколько простых примеров, которые мы с вами и разберем.
Условия в MATLAB
Ни один язык программирования не обходится без таких конструкций как условия, именно об этом мы с вами и поговорим:
Начнём с синтаксиса условия if и посмотрим на формальный вариант записи в справке:
if expression, statements, end
Что значит:
if Условие, Действие, end
Теперь примеры:
x = 1; y = 61; if ((x >= 0.90) (y >= 60)) disp(‘ok’); end;
— логически оператор умножения (логическая «И»).
И вот пример с else:
x = 1; y = 50; if ((x >= 0.90) (y >= 60)) disp(‘ok’); else disp(‘not right’) end;
В отличие от 1 примера, здесь выведется «not right».
Пару слов теперь о switch. Формально в справке:
Syntax switch switch_expr case case_expr statement, , statement case , case_expr2, case_expr3, ..
.> statement, , statement otherwise statement, ..
., statement end
Более приземлённо:
Syntax switch switch_expr case Значение — 1 Действие case , Знчение — 3, Значение — 4, > Действие В остальных случиях Действие end
Это значит, что если заданная переменная равна значению в case Значение — 1, то выполняется действие при case Значение — 1 и так далее. Если ни один из case не подошёл выполняется действие при otherwise.
Вот пример:
method = ‘Bilinear’; switch lower(method) case ‘linear’,’bilinear’> disp(‘Method is linear’) case ‘cubic’ disp(‘Method is cubic’) case ‘nearest’ disp(‘Method is nearest’) otherwise disp(‘Unknown method.’) end
Циклы в MATLAB
Теперь перейдём к циклам, начнём с for.
В справке это записано в виде
Syntax for index = values program statements : end
В приземлённом виде это значит:
Syntax for переменная = значению действие end
Не будем задерживаться на официальных формулировках, лучше к понятным и любимым примерам
for m = 1:10 m end
Вот так выглядит самый распространённый способ использования for. В этом цикле мы просто выводим значение m.
Второй способ с использованием шага (step)
for s = 1.0: -0.1: 0.0 disp(s) end
В данном случае цикл for идёт от 1 до 0 с шагом -0.1.
Ещё один вариант:
for s = [1,5,8,17] disp(s) end
В данном случае переменная s будет последовательно приравниваться 1, 5 ,8 , 17 и, соответственно, выводиться.
А также с for очень удобно выводить вектора. Вот:
for e = eye(5) disp(‘Current value of e:’) disp(e) end
В данном примере идёт последовательное обращение к элементам вектора e. Цикл while:
Формально в справке:
Syntax while expression program statements : end
Приземлённо:
Syntax while Условие Действие end
И давайте сразу к примеру (как это в реальной жизни используется).
eps = 10; while eps > 1 eps = eps — 1 end
Пока в условие (eps > 1) выполняется, цикл выполняет действие
(eps = eps-1).
Также в условии while можно использовать логические операторы И — и ИЛИ — ||, записывая несколько логических выражений в условие. Если есть вопросы по статье, пишите в комментариях.
Поделиться ссылкой:
Источник: codetown.ru
Машинное обучение в MatLab/Octave: примеры алгоритмов, подкрепленные формулами
Недавно я начал изучать machine learning. Начал с прекрасного, на мой взгляд, курса от Andrew Ng. И чтобы не забыть, а так же повторить выученное решил создать репозиторий Machine Learning in Octave.
В нем я собрал математические формулы для гипотез, градиентных спусков, «cost function»-ов, сигмоидов и прочих фундаментальных для машинного обучения «штук». Так же добавил туда упрощенные и доработанные примеры реализации некоторых популярных алгоритмов (нейронная сеть, линейная/логистическая регрессия и пр.) для MatLab/Octave. Надеюсь эта информация будет полезна для тех из вас, кто планирует начать изучение machine learning-а.
Тема машинного обучения достаточно обширная, о чем можно судить, например, из следующей схемы, которую я взял (перевел) из великолепной статьи vas3k-а.
На данный момент из всего этого разнообразия в репозитории есть примеры пяти supervised и unsupervised алгоритмов:
- Линейная регрессия с примером прогнозирования стоимости дома.
- Логистическая регрессия с примерами определения неисправных чипов, а так же распознавания рукописных цифр с применением принципа «один против всех».
- Алгоритм K-means с примером распределения данных на три кластера.
- Поиск аномалий с помощью распределения Гаусса с примером определения перегруженного сервера.
- Нейтронная сеть на основании многослойного персептрона с примером распознавания рукописных цифр.
Для каждого алгоритма есть файл demo.m, с которого можно начать анализ отдельно взятого алгоритма. При запуске этого файла из консоли Octave (или из MatLab-а) будет выведена служебная информация, иллюстрирующая работу алгоритма, а так же будут построены графики, помогающие разобраться с каким тренировочным сетом идет работа.
Надеюсь этот репозиторий будет для вас полезным и поможет сделать очередной шаг в сторону машинного обучения.
P.S. Примеры в репозитории созданы для MatLab/Octave . Это, возможно, не такая популярная опция сейчас, как Python, но все-же для обучения, быстрого прототипирования и того же перемножения матриц без дополнительных плагинов и библиотек может неплохо подойти. Еще раз успешного вам кодинга!
Источник: www.nanonewsnet.ru