Все сообщения

  • Михаил
    29.03.2013
    14:15

    Новые возможности вариантных подсистем (variant subsystems) в R2013a

    Насколько я могу судить, вариантные подсистемы впервые появились в релизе Simulink R2009b. С тех пор эта возможность для компонентного моделирования постоянно развивается, и теперь уже предлагается как полноценная замена для configurable subsystem, которая является более старой технологией.

    В MATLAB R2013a появились новые возможности для вариантных подсистем.

    • Прямой выбор активного варианта подсистемы через логическое выражение.

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

    load_system('sldemo_variant_subsystems');
    open_system('sldemo_variant_subsystems/Controller');
    

    VSS_NONLINEAR_CONTROLLER
    VSS_SECOND_ORDER_CONTROLLER
    VSS_MODE
    
     
    VSS_NONLINEAR_CONTROLLER =
     
    Simulink.Variant
        Condition: 'VSS_MODE==1'
    
     
    VSS_SECOND_ORDER_CONTROLLER =
     
    Simulink.Variant
        Condition: 'VSS_MODE==2'
    
    
    VSS_MODE =
    
         2
    
    

    Как видите, у нас два варианта, которые описываются объектами VSS_NONLINEAR_CONTROLLER и VSS_SECOND_ORDER_CONTROLLER, а при помощи переменной VSS_MODE мы переключаемся между ними (обратите внимание на свойство Condition у Simulink.Variant).

    Если мы откроем Block Parameters для подсистемы Controller, то в графическом интерфейсе мы можем увидеть, как определены варианты:

    Введем непосредственное условие вместо Simulink.Variant (конечно, условие может быть композитным):

    • Мгновенное обновление вариантных подсистем и закомментированных блоков

    Теперь, при изменении активного варианта, он будет подсвечен в модели автоматически. Вам не требуется вручную обновлять диаграмму (Ctrl-D). То же самое справедливо и для закомментированных блоков.

    Выбираем другой вариант:

    VSS_MODE = 2;
    

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

    А как вы используете вариантные подсистемы в своих моделях?


  • Михаил
    28.03.2013
    17:05

    Создание массива с атрибутами существующей переменной

    В MATLAB R2013a такие функции как ones, zeros, eye, Inf, NaN, true, false и cast теперь могут возвращать результат, который соответствует аттрибутам некоторой переменной. Поддерживаемые аттрибуты включают в себя: тип данных, разреженность и комплексность (мнимое или действительное число).

    Делать это мы можем при помощи пары аргументов ('like',variable_name), передаваемых в соответствующую функцию.

    Например, мы можем наследовать тип данных:

    % Создадим массив 2-на-3, состоящий из 8-битных безнаковых чисел:
    p = uint8([1 3 5 ; 2 4 6])
    % Создадим массив нулей такого же размера и типа данных, как p:
    X = zeros(size(p),'like',p)
    class(X)
    
    p =
    
        1    3    5
        2    4    6
    
    
    X =
    
        0    0    0
        0    0    0
    
    
    ans =
    
    uint8
    
    

    Можем наследовать разреженность:

    % Создадим разреженную матрицу 5-на-5:
    p = sparse(5,5,pi)
    % Создадим единичную матрицу 5-на-5, которая разреженная, как p:
    I = eye(5,'like',p)
    
    p =
    
       (5,5)       3.1416
    
    
    I =
    
       (1,1)        1
       (2,2)        1
       (3,3)        1
       (4,4)        1
       (5,5)        1
    
    

    Или комплексность:

    % Создадим комплексный вектор p единичной точности:
    p = single([1+i 2])
    % Создадим матрицу из единиц размером 2-на-3:
    A = ones(2,3)
    % Преобразуем A к такому же типу и комплексности, как p:
    B = cast(A,'like',p)
    class(B)
    
    p =
    
       1.0000 + 1.0000i   2.0000 + 0.0000i
    
    
    A =
    
         1     1     1
         1     1     1
    
    
    B =
    
       1.0000 + 0.0000i   1.0000 + 0.0000i   1.0000 + 0.0000i
       1.0000 + 0.0000i   1.0000 + 0.0000i   1.0000 + 0.0000i
    
    
    ans =
    
    single
    
    

    Я думаю, что это очень удобная новая возможность.

  • Михаил
    25.03.2013
    10:29
    Ни один проект не может обойтись без документации. Отчеты, спецификации, описания...

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

    Для автоматической генерации отчетов применяются MATLAB Report Generator и Simulink Report Generator. Поскольку шаблоны отчетов являются гибко настраиваемыми, мы можем из одной и той же модели сгенерировать самые разные отчеты. Например, текстовую спецификацию из модели (подробную версию и высокоуровневую версию), отчеты по тестированию и другие отчеты.

    В этом видео показываются основные возможности по автоматической генерации отчетов из MATLAB и Simulink.
  • Михаил
    22.03.2013
    16:29
    Работает ли ваша модель настолько быстро, насколько это возможно? Или хотя бы так быстро, как вас это устраивает? :)

    Если вы ищете конкретные указания о том, как можно увеличить эффективность (скорость) симуляции в Simulink, то вам будет очень интересна данная статья:

    http://www.mathworks.com/company/newsletters/articles/improving-simulation-performance-in-simulink.html
    Если кратко, то статья охватывает многие возможности по ускорению и лучшие практики при разработке в Simulink.

    Также в документации Simulink есть отдельные главы, касающиеся производительности (советую ознакомиться):
    http://www.mathworks.com/help/simulink/ug/modeling-techniques-that-improve-performance.html
    http://www.mathworks.com/help/simulink/index.html#performance

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

    Simulation Performance Advisor появился в релизе R2012b и обзавелся новыми проверками в R2013a. Теперь вы можете анализировать узкие места в ваших моделях, используя один инструмент. В этом небольшом видео рассказывается про основные функции Simulation Performance Advisor.

    Это прекрасный инструмент, и он может действительно помочь вам - однако это не волшебная кнопка "Сделать хорошо". Скорее, это первая интерация по увеличению производительности вашей модели. Поэтому - пользуйтесь правильными инструментами, изучайте статьи - и удачи вам в создании эффективных моделей! :)
  • MiSh
    22.03.2013
    14:52
    Задачи оптимизации возникают в инженерных задачах так же регулярно, как и вопрос в голове инженера – «как я могу сделать это лучше». Вот эти лучше (быстрее/ медленнее, больше/меньше и т.д.) и приводят нас к таким задачам.

    Основная проблема в таких случаях – сформулировать свои хотелки математическим языком. Т.е. записать так, чтобы машина могла понять ваш запрос.

    Для таких задач и предназначены 2 инструмента в арсенале продуктов MathWorks – Optimization Toolbox и Global Optimization Toolbox.

    В этом видео показан один из наглядных примеров, решаемых ежедневно диспетчерскими службами и авиакомпаниями. Потребление горючего самолётом, по большому счёту зависит от времени полёта, а оно зависит от того, по или против ветра летит самолёт. Можно использовать этот пример (ссылка на исходный код есть в описании видеоролика) для создания более сложной модели или просто как наглядный пример для понимания проблемы в целом.
  • MiSh
    22.03.2013
    09:14
    Многие задачи математической физики сводятся к решению одного из типов дифференциальных уравнений в частных производных, а именно краевым задачам эллиптического, параболического, гиперболического типа или задаче на собственные значения.

    Некоторые выделенные задачи имеют аналитическое решение. 
    Это, как правило, задачи с простой геометрией и точечными или однородными источниками. К таким задачам относятся, например, задача колебания струны, одномерное уравнение теплопроводности и другие одномерные задачи. Либо задачи, сводящиеся к одномерным, например, уравнение Лапласа на круге с точечным источником в центре.
    Однако наибольший практический интерес представляют пространственные двумерные и трёхмерные задачи. Стационарные и нестационарные.

    Существуют несколько методов решения таких задач, самые известные из которых - метод конечных разностей и метод конечных элементов. Именно второй из них реализован в Partial Differential Equation (PDE) Toolbox. С его помощью вы можете решать двумерные задачи в частных производных со временем, а также часть трёхмерных задач, сводящихся к 2-м пространственным измерениям, например осесимметричные или с равномерным распределением поля по третьему измерению.
    Т.к. PDE Toolbox основан на языке MATLAB, то и работать с  вашими моделями можно как из графического интерфейса, так и програмно, с помощью скриптов и функций.

    Небольшой пример работы в PDE Toolbox размещён на нашем YouTube-канале MATLABinRussia.
  • Багров Артем
    21.03.2013
    15:08
    Задача интерполяции - одна из тех задач с которой часто приходится сталкиваться как при первичном анализе данных так и при разработке алгоритмов. В этом направлении MATLAB предлагает целый набор инструментов и функций. О некоторых из них рассказывается в ролике "Сплайны и интерполяция данных в MATLAB"


    Загрузка плеера
  • Михаил
    11.03.2013
    15:38

    Эффективность функции FFT в MATLAB R2013a

    В MATLAB R2013a встроенная функция fft теперь работает быстрее на процессорах, поддерживающих набор инструкций AVX. Давайте проверим? :)

    Содержание

    Описание тестбенча

    Я написал небольшую функцию:

    function fft_avx_bench
    
    % FFT on data fr om 1024 to 33554432 samples
    N = 2.^(10:25);
    L = length(N);
    % Number of iterations to average results
    numiter = 10;
    
    time_lapse = zeros(numiter,L);
    for j = 1:numiter
        for k = 1:L
            a = randn(1,N(k)) + 1i*randn(1,N(k));
            tic;
            A1 = fft(a);
            time_lapse(j,k) = toc;
        end
    end
    
    fname = ['fft_avx_bench_res_',ver sion('-release')];
    save(fname,'time_lapse','N');
    
    disp(mean(time_lapse));
    

    Эту функцию я запустил в MATLAB R2012b, и в MATLAB R2013a. Часть кода я позаимствовал отсюда: http://www.mathworks.com/matlabcentral/fileexchange/40097-sprint-race-for-fast-butterflies. Функция очень простая. Мы запускаем fft над входными векторами различной длины - от 2^10 до 2^25, причем делаем это 10 раз (чтобы потом усреднить результаты). Мы измеряем время выполнения каждого вызова функции fft (которых всего у нас получается 160: 10 итераций над 16-ью векторами) и сохраняем в файлы.

    Далее мы запускаем следующую функцию для того, чтобы построить графики:

    function fft_plot_results
    res_12b = load('fft_avx_bench_res_2012b');
    res_13a = load('fft_avx_bench_res_2013a');
    
    semilogy(log2(res_13a.N),mean(res_13a.time_lapse),'r');
    hold on;
    semilogy(log2(res_12b.N),mean(res_12b.time_lapse),'g');
    
    legend({'R2013a','R2012b'});
    xlabel('Length of data for FFT (log2)');
    ylabel('Execution time (sec)');
    title('Comparison of FFT execution time in R2013a and R2012b');
    
    figure;
    plot(log2(res_12b.N),(mean(res_12b.time_lapse)-mean(res_13a.time_lapse))./mean(res_12b.time_lapse)*100);
    xlabel('Length of data for FFT (log2)');
    ylabel('Improvement percentage');
    title('Positive percentage shows where R2013a is faster than R2012b');
    

    И вот что у нас получается:

    fft_plot_results;
    

    Выводы

    В зависимости от размера вектора, увеличение эффективности (скорости) функции fft может достигать 40%. По-моему, очень неплохо! А какие результаты получаются у вас?


  • Михаил
    10.03.2013
    10:53
    Как раз накануне Международного Женского Дня для подписчиков стал доступен новый релиз MATLAB R2013a. Я бы не стал называть это совпадением, так как уже восьмой год подряд MathWorks придерживается полугодового цикла релизов - примерно в марте и сентябре.

    На этой странице: https://www.mathworks.com/products/new_products/latest_features.html?s_tid=hp_spot_r2013a_0213 вы можете посмотреть, что нового появилось в релизе R2013a.

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

    Поэтому я составил топ-лист пяти самых интересных изменений, на которые мне хотелось бы посмотреть подробней. Это было непросто сделать, так как вначале "мой список" содержал 50 позиций :)

    • Возможность создания масок непосредственно на библиотечных блоках, блоках Stateflow и MATLAB function. Раньше требовалось помещать их для этого в пустую подсистему.
    • Поддержка многозадачности (concurrent execution) для SIL и PIL режимов. Новый графический интерфейс для визуализации многозадачности. Поддержка таблиц подстановки функций мьютексов и семафоров для многоядерных процессоров. Различные улучшения в профилировании кода. Возможность работы с двумя блоками SIL сразу.
    • Автоматическая конвертация алгоритмов MATLAB из плавающей точки в фиксированную при работе с MATLAB Coder для генерации С кода.
    • Поддержка новых платформ Simulink Run on Target: Gumstix Overo и Raspberry PI.
    • Поддержка платформы Xilinx Zynq-7000 (смешанный C/HDL workflow).
    А что понравилось вам? Пишите в комментариях, будет интересно узнать!
  • Михаил
    15.02.2013
    11:38
    Часто ли над моделью Simulink работает больше одного человека? Я бы сказал, что почти всегда.

    А многие ли знают, как правильно организовать командную разработку в Simulink? Как показывает наш опыт, совсем немногие.
    Не так давно мы проводили вебинар "Лучшие методы крупномасштабного моделирования с использованием инструментов MathWorks" во время которого, среди прочего, рассказывали про Simulink Projects. Как оказалось, многие хотели бы внедрить этот инструмент в свой процесс разработки, но не очень понимают, с чего начать.

    В видео "Как использовать Simulink Projects совместно с Subversion" я более подробно рассказываю об интеграции Simulink Projects с популярной системой контроля версий Subversion. Некоторые моменты остались за кадром - например:

    - Настраиваемые ярлыки

    - Анализ зависимостей проекта/моделей

    - Запуск batch скриптов над проектом

    - Экспорт проектов в архиве для передачи другим пользователям

    - Пользовательские шаблоны проектов

    - Управление версиями моделей

    - Интеграция с любой другой системой контроля версий

    Сообщите нам, если вы хотите узнать об этом подробней - мы всегда сможем помочь!
  • Михаил
    13.02.2013
    17:40
    Разработка систем повышенной надежности при помощи инструментов MathWorks - это тема, которой уделяется повышенное внимание в последние годы. Говорить об этом можно очень долго, и это не совсем тема для блогов.

    Тем не менее, в этом посте я попробую собрать информацию, которая поможет вам получить представление о том, как продукты MathWorks накладываются на процесс создания систем, критических к безопасности.

    Записанные вебинары:

    Разработка встраиваемого ПО в автомобилестроении с использованием инструментов MathWorks

    Разработка систем по DO-178C с использованием инструментов MathWorks

    Разработка систем по DO-254 с использованием инструментов MathWorks

    Модельно-Ориентированное Проектирование для IEC 61508

    Моделирование требований при помощи инструментов MathWorks

    Формальная верификация в MATLAB и Simulink

    Всесторонний статический анализ с применением продуктов Polyspace

    Серия вебинаров по DO-178/DO-254 (на англ. языке)



    Обзорные видео:


    Разработка систем по DO-178 c инструментами MathWorks

    Продукты Polyspace для верификации кода

    Simulink Design Verifier для поиска ошибок проектирования



    Страницы по сертификации на сайте MathWorks и matlab.ru:



    Генерация бортового ПО для авиакосмических систем

    ARP-4754

    DO-254

    DO-178B

    DO-178C

    MISRA C

    ISO 26262

    IEC 61508



    Пользовательские истории:

    Авиакосмос

    Автомобильная

    Промышленная автоматизация



    Статьи:

    Верификация кода и обнаружение ошибок исполнения путем абстрактной интерпретации

    Модельно-ориентированное проектирование по стандарту DO-254 с помощью инструментов компаний MathWorks и Mentor Graphics

    Новые способы проверки автоматически сгенерированного кода при помощи инструментов Simulink и Embedded Coder по стандарту DO-178

    Переход к DO-178C и ARP4754A с использованием Модельно-Ориентированного Проектирования.

    Очень много статей на английском на страницах по сертификации на сайте MathWorks (ссылки приведены выше).

    События:

    Сертификация в авиастроении по стандартам DO-178(B,C), DO-254, KT 178 при помощи инструментов MathWorks
    (Рекомендую почитать статьи Тома Эрккинена, ссылки на которые вы можете найти в описании).


    Буду редактировать этот пост при появлении новых материалов по теме разработки систем повышенной надежности с инструментами MathWorks.

    Обращайтесь к нам, если возникнут дополнительные вопросы!
  • Михаил
    29.01.2013
    13:43

    Запуск моделей Simulink на Arduino

    В этом небольшом посте я бы хотел рассказать о возможностях по работе с платформой Arduino из Simulink.

    Содержание

    Использование Simulink Run on Target Hardware

    В одном из предыдущих постов я рассказывал, что такое Simulink Run on Target Hardware и как этот функционал позволяет работать с бюджетными аппаратными платформами.

    Для того, чтобы начать использовать этот функционал, достаточно выполнить команду

    targetinstaller
    

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

    В результате, вы получите следующее:

    • Библиотеку блоков Simulink для работы с периферией Arduino:
    - Digital Input/Output
    - Analog Input
    - Servo Read/Write (Continous)
    - Serial Transmit/Receive
    - PWM
    • Примеры и документацию для работы с Arduino

    Заметьте, что для того, чтобы начать использовать этот функционал, вам нужен только Simulink. Вы можете начать с базовых примеров и расширять их своими алгоритмами и функционалом. Чтобы запустить модель Simulink на Arduino, достаточно выбрать Run on Target Hardware > Prepare to Run (или Run) из меню Tools . Дополнительная информация содержится в документации.

    Функционал Simulink Run on Target Hardware доступен любому пользователю Simulink, но эта доступность и простота использования несут определенные ограничения. Например, Simulink Run on Target Hardware поддерживает только Arduino Uno и Arduino Mega 2560. Кроме того, процесс запуска модели на целевой платформе прозрачен для пользователя - т.е. вы не получаете доступа к исходному коду, который генерируется и не имеете возможности тонкого управления различными аспектами генерации кода.

    В случае, если вы хотите работать с любым клоном Arduino или вам важно управлять процессом генерации кода и его сборкой, то вам требуется Embedded Coder.

    Использование Embedded Coder

    Embedded Coder® генерирует удобочитаемый, компактный и быстрый C и C++ код для использования во встраиваемых процессорах, отладочных платах и микропроцессорах, используемых для серийного производства. Embedded Coder активирует дополнительные настройки конфигурации для MATLAB Coder™ и Simulink Coder™, а также включает продвинутые оптимизации для тончайшей настройки функций, файлов и данных в сгенерированном коде. Эти оптимизации улучшают эффективность кода и облегчают интеграцию с существующим кодом, типами данных и калибровочными параметрами, используемыми в производстве. Вы можете подключить стороннюю среду разработки к процессу сборки, чтобы получить исполняемый файл "под ключ" для развертывания на вашей встраиваемой системе.

    Поддержка Arduino в Embedded Coder реализована при помощи Target Support Package, который вы можете скачать с File Exchange: Embedded Coder Support Package for Arduino.

    В дополнение к упомянутым настройкам, и возможностью работать с любым Arduino, вы также получаете возможность верифицировать ваши алгоритмы в режиме Processor-in-the-Loop (больше информации о PIL тестировании в этом посте).

    Я записал небольшое видео , где вы можете увидеть некоторые возможности, упомянутые в этом посте.

    Если у вас есть вопросы, задавайте их нам, мы попробуем помочь.

  • Багров Артем
    28.01.2013
    14:10
    Импорт данных в MATLAB это как правило интуитивно понятная процедура. Данные могут быть получены как из внешних приборов, оборудования, осцилографов так и из баз данных и файлов различных расширений. Процедура, которая одина раз пройдена в ручную, может быть автоматизирована посредством сгенерированной m-функции. Импорт данных в MATLAB
  • Багров Артем
    28.01.2013
    14:00
    К сожалению, многие пользователи MATLAB, работающие со статистическими данным, не знают о типе данных dataset. Этот тип данных является наиболее удобным для обработки статистической и финансовой информации. Какие преимущества этого типа данных перед структурой или матрицей. В отличие от матрицы, в этом контейнере может храниться разнородная информация, что делает работу с данными более наглядной и структурированной. В отличии от структуры, данные занимают гораздо меньше памяти, а алгоритмы выполняются на порядок быстрее. Здесь выложен наглядный пример работы с типом данных dataset 
    Тип данных dataset в MATLAB
  • Михаил
    23.12.2012
    11:07
    Не так давно я рассказывал о том, каким образом Stateflow помогает нам моделировать событийные системы в Simulink. Stateflow покрывает потребности целого класса задач, связанных с теорией конечных автоматов и логикой переключения между состояниями. Однако, есть еще одна область дискретных событийных систем (часто по-английски они называются DES от Discrete Event Systems), которые относятся к теории массового обслуживания или теории очередей. SimEvents - это инструмент, который позволяет нам решать именно такие задачи.

    Чем отличается симуляция динамических систем от симуляции событийных систем?

    Динамические системы представляют собой системы, меняющиеся во времени. Симуляция таких систем обычно заключается в решении дифференциальных или конечно-разностных уравнений, характеризующих систему. Simulink является графической средой для моделирования динамических систем и предоставляет множество решателей для таких типов уравнений.

    Событийные системы характеризуются тем, что в системе происходят асинхронные события, по которым система переходит из одного состояния в другое. SimEvents предоставляет ядро для симуляции дискретных событийных систем ("календарь") и для обработки событий в системе. Кроме того, SimEvents предоставляет библиотеку компонентов для дискретно-событийного моделирования в Simulink - таких, как запросы на обслуживание и генераторы событий, очереди, серверы, переключатели, часы, различная статистика. Все это представлено в виде библиотечных блоков Simulink.

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

    SimEvents помогает анализировать и оптимизировать задержки, пропускную способность, потери пакетов и другие характеристики производительности информационной системы.

    Информационные объекты или запросы на обслуживание с настраиваемыми атрибутами позволяют гибко представлять пакеты, задачи и сущности в удобном виде.
    Эти информационные объекты движутся по линиям, соединяющим блоки в модели. Это существенно отличается от того, каким образом представлены обычные сигналы в Simulink.

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

    Или, например, смоделировать протокол связи по Ethernet и оценить такие характеристики системы как задержки пакетов, пропускная способность и загрузка канала.

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

    Полная интеграция SimEvents с MATLAB/Simulink/Stateflow позволяет нам осуществлять мультидисциплинарное моделирование сложных систем. Например, если мы говорим про управление воздушным трафиком, то мы можем моделировать диспетчеризацию самолетов на взлетной полосе при помощи SimEvents, а траекторию самолета при взлете при помощи Simulink. При помощи Stateflow мы можем моделировать режимы работы самолета - например, реакцию на ошибки (если два самолета находятся слишком близком друг к другу на взлетной полосе). Это дает нам по-настоящему сильный инструмент системного моделирования.

    С использованием других продуктов из семейства Simulink, вы можете создавать трехмерные анимации ваших моделей (Simulink 3D Animation), запускать симуляции в параллели (Parallel Computing Toolbox), и использовать алгоритмы для оптимизации (Simulink Design Optimization) процессов и решения задач по маршрутизации, планированию, выделению ресурсов и задач сетевой оптимизации.

    Чтобы получить больше информации о SimEvents, вы можете обратиться к странице продукта на сайте MathWorks. В разделе Videos & Examples есть много примеров, демонстрирующих возможности SimEvents.
  • MiSh
    05.12.2012
    13:43
    В далёкой-далёкой галактике …

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

    Чтобы не быть уничтоженными жестокими конкурентами, команда инженеров пытается срочно эвакуировать  свои MATLAB алгоритмы из ГОТовых шаблонных решений в более продвинутые, современные. Наш главный герой, Кодоход (CodeWalker) тоже принимает в этом живейшее участие. В одном из своих рейдов внутрь информационного поля галактики ему опять является в видениях старый программист и вещает, что ему может помочь магистр CUDA.

    Рассказав об этом своим друзьям, Кодоход направляется по специальному адресу, расположенному на youtube-канале MATLABinRussia, подсказанному старым мудрым программистом.

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

    В схватке он уже не тот несмышлёныш, которого мы видели в предыдущей части. Сила его велика. Ведь теперь он обладает не только навыками параллельного программирования на CPU, но ему также поддалась та малоизведанная для простых смертных сторона силы, которую даёт технология CUDA компании NVIDIA.

    Хотя ему не удаётся полностью победить своего врага – весь мир узнаёт, что паритет сил установлен, и агрессия теперь никому не сойдёт с рук.

    Попутно он узнаёт кто его отец, как его друзья спаслись из ожившего астероида и прочие мало-интересные вещи.

    Продолжение – следует.
  • MiSh
    30.11.2012
    11:12
    В далёкой-далёкой галактике…

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

    Постепенно его сила растёт,  алгоритмы становятся всё более разветвлёнными и тяжёлыми.

    Его берут в свою команду опытные инженеры. Обучают его премудростям языка технических вычислений MATLAB, всем тем тулбоксам, что помогают в ежедневной работе инженера.

    И тут появляется нежданная проблема – Dead Line, который крушит всё на своём пути. Плюс их гениальный программист уходит навсегда в просторы Интернета и Фидо. Кажется, что теперь никто не может остановить надвигающийся Dead Line.

    Однако старый гениальный программист успел передать нашему инженеру тот рецепт, как успеть уложиться в срок. Решение – использовать параллельные вычисления. И являясь в грёзах нашему главному герою, старый программист объясняет, что и как следует делать. Чтобы материализовать эти знания в понятную простым смертным форму, он выкладывает их на youtube канал MATLABinRussia.

    У команды появляется надежда.

    Пока Dead Line надвигается, они лихорадочно штудируют полученные знания и переводят свои MATLAB алгоритмы в параллельные. В решающей схватке наш главный герой виртуозно применил те простые и эффективные средства, которые ему дал Parallel Computing Toolbox и успел спасти всю свою команду до назначенного срока.

    Dead Line был побеждён.

    Продолжение – следует.
  • Михаил
    20.11.2012
    15:05
    В релизе MATLAB R2012a появилась возможность запускать модели Simulink на поддерживаемых аппаратных платформах.
    Таким образом, Simulink предлагает встроенную поддержку для прототипирования, тестирования и запуска моделей на недорогом целевом оборудовании, включая Arduino®, LEGO® MINDSTORMS® NXT, PandaBoard и BeagleBoard. Вы можете проектировать алгоритмы в Simulink для систем управления, робототехники, обработки звука и систем компьютерного зрения, и видеть, как они работают на реальном железе.

    Многие, кто читал эту новость, могли задаться вопросом - а что нового в этом функционале? Ведь еще до релиза R2012a у нас была возможность работать из MATLAB/Simulink с Arduino, LEGO и BeagleBoard - скачав соответствующую поддержку с File Exchange.

    Если вкратце, то основное отличие Simulink Run on Target Hardware (ROTH) заключается в том, что для запуска моделей Simulink на железе не требуется Embedded Coder. Для работы этого функционала достаточно иметь студенческую версию Simulink.

    Какие основные возможности Simulink ROTH?

    • Автоматическая установка и настройка поддержки целевого оборудования
    • Библиотека блоков Simulink для аппаратных интерфейсов: I/O портов, датчиков и исполнительных механизмов
    • Выстроенный рабочий процесс для разработки, выполнения и отладки ваших алгоритмов непосредственно на поддерживаемом обрудование
    • Прямая связь между Simulink целевым оборудованием
    • Интерактивная настройка параметров и мониторинг сигналов во время работы вашего приложения
    • Развертывание модели для автономного выполнения

    Главная целевая аудитория ROTH - это, конечно, студенты и преподаватели. Им требуется недорогое оборудование, и нужно, чтобы их алгоритмы просто работали на этом оборудовании.

    Есть два подхода к исследованию и анализу свойств систем – это симуляция и физическое взаимодействие.

    В данном контексте, симуляция – это конфигурация, при которой сам алгоритм, динамика объекта управления, и внешняя среда, с которой они взаимодействуют – все это моделируется на компьютере.

    Физическое взаимодействие – это сценарий, при котором настоящее устройство взаимодействует с физическим миром посредством датчиков и исполнительных механизмов. Алгоритм при этом может работать либо на компьютере и связываться с устройством, либо может работать непосредственно на процессоре, установленном в устройстве.

    Именно здесь большое значение имеет обучение на реальных проектах (Project-Based Learning).

    Студенты обучаются, выполняя определенные задачи. Это весело, это бросает вызов студентам, и часто позволяет применить на практике полученные теоретические знания.
    Методика обучения на проектах основана на непосредственном экспериментировании с настоящими задачами. Взаимодействие с настоящей средой стимулирует процесс обучения у студента и предлагает возможности по исследованию и анализу сложных проблем. Работа над проектом также предоставляет возможности для командной кооперации и пониманию того, как устроен инженерный процесс – от первоначальной идеи до конечной реализации.

    Итак, какие преимущества вы получаете при использовании технологии Simulink Run on Target Hardware? Во-первых, вы получаете из модели исполняемый файл и запускаете его на целевом железе нажатием одной кнопки. Это позволяет студентам взаимодействовать с реальным железом, при этом избегая работы с низкоуровневыми функциями и интерфейсами. Во-вторых, вы работаете в графической среде и разрабатываете алгоритм на языке блок-схем, что позволяет сконцентрироваться на самом алгоритме, нежели чем на вопросах, связанных с его реализацией. В-третьих, Simulink также предлагает широкий набор расширений, называемых тулбоксами, которые предоставляют дополнительные возможности и функционал для создания приложений обработки изображений и видео. Это упрощает создание продвинутых алгоритмов, которые применяются в индустрии.

    В этом небольшом видео вы можете посмотреть, каким образом осуществляется работа с целевым оборудованием из Simulink на примере платы BeagleBoard.
  • Михаил
    06.11.2012
    09:34
    Часто нам задают вопрос - поддерживает ли Embedded Coder определенный процессор или отладочную плату? Быстрый ответ на этот вопрос - ДА, поддерживает. Ведь Embedded Coder по умолчанию генерирует ANSI C код, который мы можем получить из модели Simulink и вручную (или полуавтоматически) интегрировать в наш проект.  Мы называем это "Экспорт алгоритма":



    Например, в случае Texas Instruments MSP430 LaunchPad, мы можем при помощи Embedded Coder сгенерировать Си-функцию (или несколько функций) из нашего алгоритма (настроив прототип функции, т.е. интерфейсы) и интегрировать её в существующий проект Code Composer Studio - среды разработки для процессоров Texas Instruments. Во многих случаях этого вполне достаточно, но зачастую хочется большей "поддержки". Но, отвечая на самый первый вопрос, давайте сначала разберемся, что означает "поддерживать".

    Поддержка можем состоять из нескольких аспектов:
    1. Автоматическая связь со средой разработки для процессора . Компания MathWorks не разрабатывает компиляторы и среды разработки для встраиваемых процессоров.  При помощи Embedded Coder мы можем автоматизировать создание makefile или целиком проектов для автоматической компиляции кода, линковки и загрузки в процессор. Все это – с использованием среды разработки, которая предоставляется производителем процессора.
    2. Оптимизация кода под конкретный процессор. Code replacement – это часть технологии Embedded Coder, которая позволяет генерировать код, оптимизированный под конкретный процессор. Осуществляется это при помощи специальных таблиц подстановок. Предоставлением оптимизированных под конкретный процессор функций (библиотек) часто занимается фирма-производитель процессора. Например, у Texas Instruments есть оптимизированные библиотеки для тригонометрических функций и т.п. Конечно, можно и свои собственные функции таким образом подставлять.
    3. Специфические интерфейсные драйвера в виде блоков Simulink. Например, для определенных процессоров есть блоки Simulink для ШИМ, ЦАП, АЦП и т.п. При генерации кода из этих блоков генерируется специфичный для интерфейсов этих процессоров код. К этим блокам также относятся низкоуровневые операции с памятью, которые также могут быть реализованы в виде блоков Simulink.
    4. Интеграция с ОС реального времени, планировщиком, прерываниями  обеспечивается также при помощи специальных блоков Simulink и настроек в модели.
    5. Поддержка PIL симуляции. Подробнее об этом режиме симуляции вы можете почитать в моей предыдущей записи здесь.
    6. External Mode. Такой режим симуляции позволяет осуществлять калибровку параметров, мониторинг и трассировку сигналов непосредственно из модели Simulink при работе нашего кода на встраиваемом процессоре.
    Разные процессоры и разные среды разработки могут поддерживаться Embedded Coder в разной степени. С каждым релизом добавляется поддержка новых платформ, при этом устаревшие платформы отпадают. С актуальным списком поддерживаемого оборудования и сред разработки вы можете ознакомиться на странице Embedded Coder на сайте MathWorks. Конечно, невозможно организовать поддержку из коробки для всех возможных процессоров и отладок, поскольку многие инженеры используют собственные отладки, а количество различных микропроцессоров и DSP на рынке зашкаливает. Именно поэтому для каждого из перечисленных пунктов Embedded Coder предоставляет API, который позволяет реализовать поддержку своего железа.

    При реализации своего Target Support мы имеем возможность создавать полный проект «под ключ» из модели Simulink – вместе с драйверами устройств, планировщиком и т.п. Мы называем это "Target Support":




    Конечно, не обязательно реализовывать поддержку всех пунктов, упомянутых выше. Во многих случаях достаточно автоматизировать создание makefile для автоматической компиляции, линковки и заливки прошивки на плату. А также реализовать режим PIL для выполнения верификации скомпилированного кода относительно симуляции модели.

    В Центре компетенций MathWorks в России есть практика проведения небольших пилотных проектов вместе с клиентами, которые интересуются автоматической генерацией кода. Такой пилотный проект позволяет им оценить возможности Embedded Coder и понять необходимость использования автоматической генерации кода в их компании. В списке поддерживаемого оборудования Embedded Coder содержится большое количество актуальных процессоров и отладочных плат.
    Мы решили создать собственный Target Support для TI MSP430 LaunchPad, поскольку для этой платформы существует только возможность "экспорта алгоритмов" (см. выше). Мы рассматриваем эту отладку как доступную платформу для оценки автоматической генерации кода и верификации.

    Алгоритмы, которые мы можем реализовать на MSP430 – достаточно простые, но это только к лучшему. Это позволяет нам больше сконцентрироваться на возможностях по генерации кода, нежели чем на создании алгоритма как такового. Кроме того, наши клиенты могут использовать этот Target Support как базу для создания реализации для своего процессора или отладочной платы. Если вас интересует такая возможность, вы можете получить отладочный комплект (включающий железо и софт) на этой странице.

    Texas Instruments MSP430 LaunchPad это простое в использовании, недорогое, и масштабируемое введение в мир микроконтроллеров и семейства MSP430. Эта отладочная плата включает: два светодиода, две кнопки, одна из которых является пользовательской, внутрисхемный JTAG, DIP разъем для MSP430 (что позволяет устанавливать на плату другой процессор семейства MSP430), пины ввода-вывода и встроенный датчик температуры (в процессоре g2553).

    Типичные применения MSP430 – это бюджетные системы с ультранизким потреблением энергии. Также системы захвата аналоговых сигналов и датчиков, обработка данных для передачи на хост или отображения на LCD. Есть много интересных пользовательских проектов – например, связанных с робототехникой (шагающий паук, рука робота), цветной LCD, Bluetooth, велосипедный компьютер, и даже реализация FAT16. Многим членам сообщества не откажешь в чувстве юмора – если вы не слышали, как LaunchPad и пьезо-спикер играют Имперский Марш – вам это надо послушать!

    Итак, что включает в себя Target Support для MSP430 LaunchPad?
    • Поддерживаемые среды разработки – это Code Composer Studio 5 на Windows и Linux. Кроме того, на Linux поддерживаются mspgcc и mspdebug, которые являются открытыми аналогами Code Composer Studio для MSP430.
    • Библиотека блоков Simulink для периферийных устройств MSP430 LaunchPad поддерживает светодиоды, датчик температуры, пользовательскую кнопку и блоки для передачи/приема данных по последовательному интерфейсу.
    • Поддерживается симуляция в режиме PIL, а также профилирование времени выполнения в режиме PIL.

    Разработка происходит на Github, а релизы можно скачать с File Exchange – официального ресурса MathWorks для обмена пользовательским контентом.

    В этом видео вы можете посмотреть, как осуществляется совместная работа Embedded Coder и TI MSP430 LaunchPad.
  • MiSh
    01.11.2012
    12:04
    Иногда бывает так, что в своей работе хочется использовать уже написанный код. А не пытаться делать то же самое еще раз на Matlab.
    И неважно чей это код - свой или чужой, написанный давным-давно. 

    Представьте, внезапно вам приходит заказ из РосКосмоса - караул, дали денег на свой марсоход. Надо СРОЧНО, а даже лучше ВЧЕРА посчитать наилучшую орбиту с учётом влияния всех ближайших планет и даже наиболее крупных астероидов.

    Какой первый вопрос должен возникнуть у исполнителя? 
    Нет, не куда прятаться с выплаченным авансом.
    Правильный ответ - а ведь советские инженеры, учёные и конструкторы уже это всё когда-то считали. А не использовать ли результат их работы? Ведь хранятся же где-то все эти программы. Поднимаете архивы, добираетесь до нужной папки. И тут БАХ - а оно на Fortran, ведь это в те времена был наиболее продвинутый язык для научных расчётов. 

    Но вы-то продвинутый пользователь MATLAB. Вы-то знаете, что в него достаточно просто встроить библиотеки, написанные не только на C/C++, но и Fortran. 

    И вы, открываете справку MATLAB по нужному разделу. Для быстрого освежения знаний дополнительно открываете вашу домашнюю страницу в браузере - выбираете там видео, как использовать библиотеки Fortran в MATLAB на примере нахождения определенного интеграла методом Гаусса, взятого из библиотеки численного анализа ВЦ МГУ.
    И с высочайшей эффективностью пишете ваш расчет, делая вставки где-то из Fortran, где-то из C/C++. 

    Как итог - марсоход на Марсе, ваш гонорар - в банке (пятилитровой). У РосКосмоса - расширенные бюджеты, вы - завалены заказами от них на годы вперед. В-общем, всем хорошо. И только марсоход один-одинёшенек ищет своего троюродного брата из NASA, всё больше подозревая его виртуальность.
  • Михаил
    24.10.2012
    11:03
    Мы часто демонстрируем нашим пользователям возможности автоматической генерации кода из MATLAB/Simulink и исполнение этого кода на целевых процессорах. Но иногда, под рукой просто нет необходимого процессора. На помощь приходит симулятор встраиваемого процессора. Сегодня я бы хотел вам рассказать о совместной работе Embedded Coder и среды разработки Green Hills Sotfware MULTI для верификации автоматически сгенерированного кода из моделей MATLAB/Simulink/Stateflow в режиме Процессор-в-Контуре (по-английски это называется Processor-in-the-Loop или PIL).

    Прежде, чем мы начнем, давайте введем основные определения.
    Embedded Coder – это продукт компании MathWorks, разработчика MATLAB/Simulink. Embedded Coder предназначен для автоматической генерации С/С++ кода производственного качества. Два базовых продукта для генерации кода из функций MATLAB и из моделей Simulink/Stateflow, называются MATLAB Coder и Simulink Coder. Embedded Coder расширяет возможности этих продуктов, добавляя опции по конфигурации и оптимизации кода. Сгенерированный код является портируемым, читаемым и компактным и подходит для использования во встраиваемых системах. Embedded Coder позволяет нам проводить верификацию скомпилированного кода в режимах SIL и PIL, поддерживая интеграцию с распространенными средами разработки и оптимизацию кода под конкретный процессор.

    MULTI – это среда разработки от компании Green Hills Software. MULTI предназначена для инженеров-разработчиков встраиваемых систем. Среда интегрирована с компиляторами Green Hills Software и аппаратными модулями отладки для различных процессоров. MULTI поддерживает набор операционных систем реального времени, а также интерактивный отладчик и профилировщик. Green Hills Software MULTI также предоставляет симулятор процессора PowerPC, на котором мы будем проверять наш автоматически сгенерированный код.

    Что такое PIL тестирование, которое я уже упоминал?
    На уровне модели Simulink мы работаем с нашей системой, моделируя алгоритмы (например, это могут быть алгоритмы управления с обратной связью, обработки сигналов, фильтрации или любые другие алгоритмы), передавая входные воздействия и анализируя выходные сигналы. В общем случае входные сигналы могут приходить с нашей модели окружения или модели объекта управления, или могут быть просто заданы в виде тестовых векторов. Нас устраивает, как алгоритм работает в Simulink. Но каким образом убедиться, что он будет работать точно так же в реальном железе?

    Мы используем автоматическую генерацию кода при помощи Embedded Coder, кросс-компиляцию этого кода при помощи среды разработки для нашего встраиваемого процессора и загружаем объектный код на целевой процессор. Но как протестировать, что полученный код работает так же, как оригинальная модель в MATLAB/Simulink?
    Кроме самого алгоритма, в коде также появляется специальная обвязка, которая автоматически создается Embedded Coder и представляет собой реализацию PIL.

    Это обвязка позволяет принимать и передавать данные с хост компьютера, и общаться с оригинальной моделью Simulink. Интерфейс взаимодействия может быть любым, который поддерживается вашим процессором – последовательный интерфейс, Ethernet, разделяемая память, JTAG.


    Таким образом, при тестировании в режиме PIL происходит генерация, кросс-компиляция и исполнение объектного кода на целевом процессоре или симуляторе процессора. Входные сигналы поступают в наш алгоритм в Simulink и в целевой процессор, где они обрабатываются в соответствии с заложенным алгоритмом и возвращаются обратно в Simulink для анализа и верификации.

    Я записал для вас небольшое видео с демонстрацией совместной работы Embedded Coder и Green Hills Software MULTI для запуска тестирования PIL на симуляторе процессора PowerPC.

    Если вы хотите получить больше информации по автоматической генерации кода и верификации в режиме PIL – обращайтесь к нам, мы всегда сможем помочь.
  • Михаил
    22.10.2012
    19:24
    Всем добрый день! Наверное, вы заметили, что мы не так часто обновляем блог, как хотелось бы :). Мы будем стараться это понемногу исправлять.

    Одна из целей работы центра компетенций MathWorks в России – это повышение осведомленности инженеров, использующих MATLAB/Simulink о возможностях этих продуктов. Поэтому предлагаю сегодня повысить нашу осведомленность о Stateflow (http://sl-matlab.ru/services/products/detail.php?ID=426) – расширении MATLAB/Simulink для моделирования событийных систем, конечных автоматов и логики принятия решений.

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

    Stateflow это расширение Simulink для разработки конечных автоматов и машин состояний. Stateflow предоставляет элементы, требуемые для описания сложной логики в естественном, читабельном и понятном виде. Он тесно интегрирован с MATLAB и Simulink и предоставляет эффективную среду для разработки встраиваемых систем, систем управляющей и диспетчерской логики, планировщика задач, систем переключения режимов работы и реакции на ошибки.

    Stateflow позволяет осуществлять интерактивную анимацию поведения нашей систем и отлаживать алгоритмы, используя встроенный отладчик. Вот отличный пошаговый пример из документации по работе с отладчиком. Отладчик Stateflow позволяет вам устанавливать точки останова, управлять процессом симуляции и отображать информацию в модели. Он может быть запущен как из графического интерфейса пользователя, так и из командной строки MATLAB. Графический интерфейс отображает в явном виде информацию о состоянии выполнения диаграммы. Вы можете увидеть информацию о точках останова, текущих значениях сигналов, активных состояний и стеку вызова.

    Ошибки времени выполнения также могут отслеживаться при помощи отладчика. Такие ошибки включают несоответствия между состояниями, конфликтующие переходы, нарушения диапазонов данных, потенциальные бесконечные циклы и неправильно определенные таблицы истинности.

    Stateflow является частью интегрированной среды моделирования, где вы можете моделировать, симулировать и анализировать сложные динамические системы. Используя Stateflow совместно с Simulink, вы можете создавать модели вашей встраиваемой системы, которые сочетают симуляцию логики поведения в Stateflow (такую, как, например, реакции на ошибки или переключения режимов) с алгоритмическим поведением в Simulink (таким, как управление с обратной связью или обработка сигналов). Вы также можете создать модель системы и окружения в Simulink и запускать гибридные симуляции для изучения их взаимодействия. Это особенно важно, поскольку системы реального мира достаточно сложны и при их моделировании используются непрерывные, дискретные и событийные сигналы. Рекомендую вам посмотреть на примеры использования Stateflow из документации - я очень удивлюсь, если там не окажется примера, близкого вам :)

    Вот ключевые возможности Stateflow:
    • Stateflow предоставляет элементы языка, иерархию, параллелизм и детерминированную семантику выполнения для описания сложной логики в естественном и понятном виде.
    • Позволяет определять функции в графическом виде, используя диаграммы; процедурно, используя функции MATLAB и в табличном виде, при помощи таблиц истинности и таблиц переходов (эта функция, между прочим, появилась в релизе R2012b).
    • Поддерживает планирование переходов и событий при помощи темпоральной логики.
    • Поддерживает конечные автоматы Мили и Мура.
    • Имеется возможность интеграции внешнего Си кода.
    • Поддержка шин сигналов, векторных и матричных сигналов, асинхронных широковещательных событий, а также типов данных с фиксированной точкой.
    • Анимация диаграмм Stateflow и запись данных во время симуляции для лучшего понимания системы и упрощения отладки.
    • Stateflow выполняет статические проверки, включая проверки на некорректно определённые таблицы истинности.
    • Во время выполнения, проверяет конфликтующие переходы, проблемы зацикливания, несовместимость состояний, нарушения диапазонов данных и переполнения.
    • Включает встроенный отладчик для установки графических точек останова, запуска диаграмм по шагам и анализа данных.
    •  Вы можете автоматически генерировать Си код из диаграмм Stateflow  с использованием Simulink Coder.
    •  Вы можете привязывать требования непосредственно к объектам Stateflow и получать информацию о покрытии модели тестами используя Simulink Verification and Validation.
    Из библиотеки блоков Simulink вы можете добавить в вашу модель блок, который является диаграммой Stateflow. В этой библиотеке есть и другие интересные блоки (некоторые из которых появились совсем недавно) – но о них в другой раз.
    Диаграмма Stateflow графически представляет конечный автомат, где состояния и переходы являются базовыми блоками для создания системы.

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

    Stateflow включает следующие инструменты для создания и изменения диаграмм:
    • Редактор диаграмм Stateflow – предоставляет пункты меню, навигацию и панели инструментов, управление масштабом и другие полезные функции.
    • Мастер автоматического создания символов – помогает находить и автоматически создавать недостающие данные и события в ваших диаграммах Stateflow.
    • Отладчик Stateflow – управляет анимацией на диаграммах Stateflow, и обеспечивает расширенные возможности для анализа результатов моделирования и обнаружения и диагностики неожиданного поведения ваших диаграмм Stateflow.
    Во время симуляции, вы можете визуализировать диаграммы Stateflow следующими способами: 
    • Анимация активных состояний и путей перехода
    • Использование встроенных осциллографов и дисплеев в Simulink
    • Построение собственных графических интерфейсов для визуализации с использованием MATLAB и инструментов разработки графических интерфейсов
      Вы можете записывать данные симуляции для последующей обработки и визуализации в MATLAB.
    Таким образом, Stateflow существенно расширяет возможности MATLAB/Simulink для моделирования событийных систем, конечных автоматов и логики принятия решений.
  • Denis Zhegalin
    27.01.2012
    09:01
    Недавно Apple анонсировали несколько новых идей в виде своих программных продуктов. Первая идея - интерактивные учебники и бесплатная среда для разработки таких учебников. Вторая - это платформа для ВУЗов для выкладывания своих лекций. Реализовано в виде сервиса iTunes U: можно подписаться на различные лекции (Introduction to Robotics от Stanford, Signals and Systems от MIT и многие другие) и учиться на любом яблочном устройстве (iPhone, iPad, iPod и компьютеры семейства Mac). Сами курсы оформлены в виде лекций (pdf, ppt и др.), аудио и видео записей. Курсов и лекций очень много, и некоторые из них подразумевают понимание работы в MATLAB, например, Introduction to Linear Dynamical Systems профессора Stephen Boyd показывает, как решать ОДУ с помощью MATLAB в лекции Solving General Linear Equations with MATLAB. 



    Почитать подробнее про iTunes U: http://www.apple.com/education/itunes-u/

    Ознакомиться с курсами, основанными на MATLAB можно здесь: http://www.mathworks.com/academia/classroom-resources/  Они пока еще не выложены в iTunes U, но в любом случае доступны для всех желающих. Для того, чтобы разместить ссылки на свой курс на сайте mathworks.com, пишите нам.


    MathWorks Academia



  • Denis Zhegalin
    09.08.2011
    11:37
    Хотел бы посоветовать пользователям MATLAB пройти официальное обучение. Мне очень часто говорят:
    Цитата
     "Я использую MATLAB 10 лет и знаю его как свои 5 пальцев" 

    На деле оказывается, что специалист знает некоторый базовый функционал, который не менялся с релиза 6.5. Да, специалист хорошо разбирается в языке или в наборе блоков Simulink, но нет понимания о многих удобных функциях, которые очень сильно упрощают работу в продукте. Например: режим ячеек, автоматическое создание скриптов MATLAB (импорт данных, визуализация и т.д.), автоматическое создание отчетов (в MS Word, HTML, LATEX, PDF...), и многое другое. Если Вы это используете, то это хороший показатель.

    Как решить проблему? Записаться на тренинг MLBE - основы основ. Обязателен для прохождения всеми специалистами. В меню этого сайта можете посмотреть на весь список тренингов. Уже были прецеденты - пользователь приходит на продвинутые тренинги (пропустив MLBE), и тренеру приходится тратить очень много времени на объяснение простых вещей, о которых рассказывается в базовом тренинге. 

    Для начинающих пользователей могу посоветовать пройти интерактивные обучения на сайте MathWorks (более 700 часов). Находится тут: http://www.mathworks.com/academia/student_center/tutorials/?s_cid=global_nav
    Можно пройти курс по MATLAB, по численным методам, по Simulink, по системам управления и по цифровой обработке сигналов. Абсолютно бесплатно. От Вас нужна только регистрация на сайте MathWorks. Естественно, интерактивное обучение не охватывает все темы официального тренинга, но сильно поможет в освоении.
  • Denis Zhegalin
    09.08.2011
    11:16
    Очень часто пользователи пишут, что у MATLAB есть проблемы с отображением кириллицы. Я с этим не согласен. Зачастую пользователи в принципе не понимают что такое локаль, что такое кодировка и т.д. Пару дней назад я столкнулся с проблемой отображения символов под Mac OS X Lion. Я сменил локаль системы на UTF-8, прописал все системные переменные, но все равно получал кривое отображение символов. Причина была в том, что при проверке системной переменной LANG я получал ответ в виде KOI8-R... И никак не мог это поменять. Прописывал все настройки (принудительное использование UTF-8 ) в стартовом скрипте MATLAB - startup.m. MATLAB все равно возвращал на KOI8-R...Решение нашлось достаточно быстро: необходимо было подредактировать файл: 
    Код
    $matlabroot/bin/lcdata.xml
    И поменять пару строк:

         <locale name="ru_RU" encoding="KOI8-R" xpg_name="ru_RU.KOI8-R">
       <alias name="ru"/>
       <alias name="ru_SU"/>
         </locale>
    На:
         <locale name="ru_RU" encoding="UTF-8" xpg_name="ru_RU.UTF-8">
       <alias name="ru"/>
       <alias name="ru_SU"/>
         </locale>


    Под другими unix образными системами такого замечено не было.
Страницы: Пред. 1 2 3 След.