Обновить
5.6

Matlab *

Математическое моделирование и одноимённый ЯП

Сначала показывать
Порог рейтинга
Уровень сложности

Оптимизация оптимизации в MatLab: nested и anonymous functions

Время на прочтение4 мин
Охват и читатели16K
Добрый день!
Я занимаюсь научными исследованиями в области систем управления, и Matlab — мой основной рабочий инструмент. Одна из возможностей в MatLab — численная оптимизация. Оптимизировать (минимизировать) можно любую функцию, которая принимает на вход вектор варьируемых параметров и возвращает значение минимизируемого критерия. Естественно, в процессе оптимизации целевая функция вызывается множество раз и ее быстродействие существенно. В матлабе есть хорошие программные средства, которые часто позволяют существенно улучшить быстродействие, сохранив при этом читаемость и удобство сопровождения кода. Я приведу пример задачи, покажу на нём, что такое anonymous functions и nested functions, а потом покажу, как можно совместить эти два инструмента для заметного повышения быстродействия.

Читать дальше →

Подготовка графиков в MatLab

Время на прочтение4 мин
Охват и читатели177K
В написании научных статей немалую часть времени занимает подготовка иллюстраций, графиков и диаграмм. Хочу поделиться некоторыми мыслями и примерами того, как можно ускорить этот процесс. Материал пригодиться тем, кто пользуется системой MatLab.

MatLab предоставляет широкие возможности по отображению графической информации в виде графиков, диаграмм, и т.п. Однако не всегда получаемые по умолчанию иллюстрации удовлетворяют требованиям оформления статей. Для этого в системе MatLab существует множество настроек. И чтобы ускорить подготовку иллюстраций предлагаю воспользоваться несколькими строчками кода, которые помогут помочь настроить отображение графиков.
Читать дальше →

Использование .Net библиотек в MATLAB

Время на прочтение5 мин
Охват и читатели6.2K
Привет Хабровчанам! На Хабре уже обсуждался вопрос интеграции .Net c Matlab'ом. Цель же этой статьи — показать, как можно быстро и удобно решить обратную задачу: вызывать управляемый код из произвольных .Net библиотек в Matlab.

Зачем это нужно?



Несмотря на богатый набор алгоритмов в функционале Matlab'а, основным сценарием, в котором это может понадобиться, является необходимость задействовать в вычислениях уже имеющиеся и обладающие известными показателями качества .Net библиотеки, в которых реализованы математические алгоритмы.
Читать дальше →

Некоторые полезные средства настройки графиков (plot) в MATLAB

Время на прочтение3 мин
Охват и читатели74K
Недавно, в очередной раз проверяя домашние работы своих студентов, я загорелся желанием автоматизировать этот процесс. Задание состояло в составлении рабочей таблицы девиации магнитного компаса и построения кривой девиации.

Входными данными служили показания магнитного компаса (МК), синхронно наблюдаемые показания гирокомпаса (ГК), поправка ГК и значение магнитного склонения для района, в котором проходили измерения.
Читать дальше →

Построение фрактальных фигур в Matlab

Время на прочтение4 мин
Охват и читатели30K
«Итерация от человека. Рекурсия — от Бога.» Л. Питер Дойч

Введение


Многие из нас слышали про фракталы, я думаю, что многие даже имеют довольно четкое представление об этих удивительных математических объектах и их тесной взаимосвязи с физическими природными структурами. Тем не менее, в этой статье я хотел бы затронуть исследовательский и философский аспекты данного вопроса. Сама по себе возможность генерировать сложнейшие узоры на комплексной плоскости с помощью простых математических выражений весьма заманчива, собственно это и натолкнуло на написание статьи. Написав пару строчек кода мы сможем упасть на самое дно разрядной сетки нашего ПК, изучая масштабируемые фрактальные узоры.
Читать дальше →

Предварительная обработка речевых сигналов с помощью Matlab

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

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

Типичная величина одного интервала — 25,6 мс. Соседние интервалы берутся со смещением относительно предыдущего интервала. Применяемая величина перекрытия интервалов равна 10 мс. В результате предварительной проработки каждого из указанных интервалов получаем вектор из нескольких десятков спектральных значений.
Читать дальше →

Биометрическая идентификация по рисунку вен ладони (mini How To)

Время на прочтение5 мин
Охват и читатели29K


Волею судеб поступил в один из Российских вузов. На дипломе было решено исследовать одно из направлений биометрической идентификации – идентификацию по рисунку вен ладони. На начальных стадиях было задумано предоставить к защите работающую модель устройства (но все оказалось не так просто).
Читать дальше →

Как я дружил MatLab и C++ в Linux

Время на прочтение4 мин
Охват и читатели47K

Прошла пора дипломов и я хочу поделиться своим рецептом его выполнения. Итак: тема сложная, времени мало, писать все «с нуля» или искать готовые библиотеки — нет большого желания, тем более что мне важна скорость работы системы, а от левых самописных библиотек можно ждать любого подвоха.
Надо сказать что размышлял я недолго и пришел к следующим выводам:
  1. Операционная система — тут думать особо не пришлось: т.к. я являюсь поклонником Debian (к слову: мое решение можно перенести и на Windows).
  2. Интерфейс будущей программы — C++, Qt.
  3. Логика программы — MatLab.

О том, как я объединял этот зоопарк в одну систему - прошу под кат.

Вебсервер nginx + fastcgi-wrapper + matlab

Время на прочтение2 мин
Охват и читатели6.4K

Сегодня я не в первый раз задался вопросами: какие языки программирования пригодны для веба, и имеет ли смысл решать какую-то узкую задачу способом, который на первый взгляд для этого не подходит? Мне захотелось попрактиковаться, сделав что-нибудь обычное необычным способом.


Читать дальше →

Почему мы создали Джулию, новый ЯП для технических вычислений

Время на прочтение3 мин
Охват и читатели10K
Если вкратце, потому что мы жадные.

Мы продвинутые пользователи Matlab. Некоторые из нас хакеры Lisp. Некоторые питонисты, другие рубисты, есть ещё Perl-хакеры. Среди нас есть такие, кто использовал Mathematica раньше, чем у него начали расти волосы на лице. Есть и такие, у кого до сих пор не выросли. Мы построили больше графиков на R, чем способен любой здравомыслящий человек. C — это язык, который мы бы взяли на необитаемый остров.

Мы любим все эти языки; они прекрасны и могучи. Для той работы, которую мы делаем — научные вычисления, машинное обучение, дата-майнинг, крупномасштабная линейная алгебра, распределённые и параллельные вычисления — каждый идеально подходит в определённом аспекте, но ужасен в других. Каждый из них — это компромисс.

Мы жадные: мы хотим больше.
Читать дальше →

Рейтинг на основании истории

Время на прочтение4 мин
Охват и читатели3K

Постановка задачи


Контекст: есть шахматный турнир с достаточно большим количеством игроков самого разного уровня.
Приняты решения: не разбивать игроков на чётко определённые группы (друг друга не знаем ещё, непонятно, кого куда помещать), не делать турнир «на вылет» (много новичков, им просто обидно будет вылететь после первой партии). Более-менее (вручную) справляемся с выбором партнёром примерно одинакового уровня.

Задача: сделать систему рейтинга по результатам турнира. Поскольку играем не «на вылет», финала нет. Учитывать количество очков несерьёзно из-за разношерстности игроков. То есть система рейтинга должна быть такой, что выигрыш у самого слабого игрока или проигрыш у самого сильного практически не должны влиять на наш рейтинг.
Читать дальше →

Алгоритм скользящего среднего (Simple Moving Average)

Время на прочтение3 мин
Охват и читатели117K
Возникла задача реализовать на С++ алгоритм скользящего среднего, который находит широкое применение в обработке сигналов и статистике.
image
За основу была взята функция smooth в MATLAB.
Данную функцию можно использовать для фильтрации сигналов. В качестве входных параметров определяются массив данных и окно усреднения.
Кому интересно, прошу под кат
Читать дальше →

Интегрируем MATLAB в С#.NET

Время на прочтение4 мин
Охват и читатели54K

Вступление


В этой статье я постараюсь максимально полно и пошагово рассказать, как связать MATLAB с С#.NET и сделать приложение с интерфейсом на примере построения 3D-плоскости.

Зачем это нужно?


Очень часто перед программистом встает задача вычисления сложной математики. MATLAB в свою очередь является отличным средством для решения, но слаб в создании полноценного пользовательского приложения (можно воспользоваться инструментами GUI MATLAB'a, но это меня не устроило).
Читать дальше →

Ближайшие события

MatLab и ООП, оптимизация

Время на прочтение3 мин
Охват и читатели21K
Данный пост предназначен для людей, имеющих практику программирования ООП (извините за тавтологию), волей судеб вынужденых писать на MatLab. Язык приятный, но граблей достаточно большое количество, и не обязательно каждому наступить на них все.

На написание вдохновил недавний пост об оптимизации кода на MatLab, точнее комментарии, требовавшие большего углубления в тему.

Итак…

История


В MatLab ООП долгое время вообще не было.
Году в 2005 появились первые, страшно выглядящие потуги: класс — папка, метод — отдельный файл, свойства — единый метод доступа с параметром «имя свойства».
«Прекрасное» начало, к счастью от него быстро отказались.

Ещё через несколько лет сделали ООП в более привычном виде — классы, наследование, всё как у людей. Кроме нескольких деталей.
Читать дальше →

Увеличиваем скорость вычислений в Matlab

Время на прочтение3 мин
Охват и читатели29K
Добрый день, уважаемые хабровчане!

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

Статья является описанием жизненного опыта и вольным переводом англоязычной публикации.
Читать дальше →

Повышение четкости изображений на основе частотной фильтрации в Matlab

Время на прочтение4 мин
Охват и читатели17K
Введение
На сегодняшний день разработано множество алгоритмов по улучшению качества изображений отличающихся быстродействием сложностью математических методов требованиям к ресурсам вычислительной системы и т.д. При этом одним из наиболее простых методов является обработка изображений на основе его фильтрации в частотной и пространственной областях.
Читать дальше →

Генерация кода для программируемых логических контроллеров в программе Matlab

Время на прочтение3 мин
Охват и читатели12K
Компания MathWorks объявила о выпуске нового продукта — Simulink PLC Coder. Данный продукт позволяет автоматически генерировать согласно стандарту IEC 61131 код для программируемых логических контроллеров (ПЛК) и программируемых контроллеров автоматизации. Это нововведение позволяет использовать модельно-ориентированное проектирование для промышленного и силового оборудования, управляемого ПЛК.
Читать дальше →

Поддержка GPU в математическом пакете MATLAB

Время на прочтение1 мин
Охват и читатели16K
За последние год-полтора создание кластеров и суперкомпьютеров на GPU стало новым трендом для высокопроизводительных систем. Это вполне имеет смысл, потому что графические процессоры прекрасно поддерживают параллельную работу и на некоторых задачах обладают производительностью гораздо выше, чем у бюджетных CPU.

В этом смысле вполне логичной выглядит новость, что в пакете программ математического моделирования MATLAB версии 2010b появилась нативная поддержка Nvidia CUDA (версия Compute Capability 1.3 или выше). Она включена в набор инструментов Parallel Computing Toolbox. Теперь распараллеливание команд осуществляется прямо из MATLAB и не нужно переписывать код на C++ или Fortran специально для CUDA.
Читать дальше →

Алгоритмы заливки изображений, популярно и с видео

Время на прочтение6 мин
Охват и читатели49K

Аннотация


image
Заливка изображений — часто нужная на практике задача, суть которой — заполнить некоторую область изображения, ограниченную контуром, заданным цветом. И казалось бы все просто, однако часто медленно и криво. В данной статье рассказывается об известных алгоритмах заливки на основе стека и приводится реализация на псевдокоде MatLab. Я постарался наполнить столь скучную тему интересными видео роликами, и описал процесс их получения, опять же с использованием MatLab. В этой статье мы будем заливать Карлсона который живет на крыше, так как хабралоготипа для этих целей в нормальном разрешении я не нашел. А так же несколько строк кода о том как читать и работать с картинками в MatLab.
Читать дальше →

Детектирование округлостей на изображении средствами MATLAB

Время на прочтение3 мин
Охват и читатели30K
image
В этом топике я приведу альтернативный подход к задаче, решенной товарищем VasG тут. Как заметили в комментариях, задачу обнаружения округлостей на изображении можно было решить при помощи MATLAB Image Processing Toolbox, что я и сделал. MATLAB радует меня очень сильной документацией с большим количеством наглядных примеров; а также удобством m-языка, за счет которого сильно сокращается время реализации вычислительных решений. Конечно, есть и минусы — в частности алгоритмы работают медленно, — но для данной задачи это не существенно. Отмечу только, что из m-языка довольно просто можно получить C-код, который будет работать гораздо быстрее.
Читать дальше →