Комментарии matlab: Многострочные комментарии в MATLAB

Содержание

Четыре быстрых шага на пути к производству. Часть 1

Введение

В этой серии из четырех статей мы исследуем достижения в области платформ и инструментов проектирования, которые позволяют разработчикам ускорить процесс создания моделей и прототипов систем радиосвязи, а также переход от моделирования и прототипирования к производству конечной версии продукта. В качестве реального примера мы создадим прототип программно-определяемой радиосистемы (software-define radio, SDR), принимающей и декодирующей сигналы системы радиовещательного автоматического зависимого наблюдения (ADS-B) для извлечения информации о положении, высоте и скорости коммерческих летательных аппаратов. Для этого нам потребуются MATLAB и Simulink, а также навыки интеграции программного обеспечения (ПО)/программируемой логики во встраиваемых системах. В качестве аппаратной платформы будем использовать платформу прототипирования систем SDR на базе компонентов компаний Analog Devices и Xilinx. При помощи программных продуктов MATLAB и Simulink будут решены следующие задачи:

  • Проектирование алгоритмов обработки сигналов, используемых для декодирования сообщений ADS-B.
  • Моделирование радиотрансивера сигналов ADS-B.
  • Генерация кода на языках C и HDL.
  • Верификация кода на языках HDL в целевой платформе с трансивером и FPGA, с помощью записи данных и режима реального времени.

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

В первой части серии статей мы обсудим платформу прототипирования систем SDR на базе компонентов Analog Devices и Xilinx, ее возможности и преимущества, а также дадим краткое описание инструментов, используемых в процессе проектирования. Во второй части будет представлен обзор сигналов автоматического зависимого наблюдения-вещания (automatic dependent surveillance broadcast, ADS-B) и показано, как декодировать содержащуюся в них информацию при моделировании в MATLAB и Simulink. В третьей части будет обсуждаться комбинированное программно-аппаратное моделирование (hardware in the loop, HIL), когда сбор сигналов производится с помощью реального трансивера, а обработка сигналов, осуществляемая в целях верификации алгоритма, по-прежнему выполняется в программе Simulink на хост-процессоре.

В четвертой части мы возьмем алгоритм, разработанный в части 2 и проверенный в части 3, сгенерируем из него код при помощи продуктов HDL Coder и Embedded Coder компании MathWorks, реализуем его в реальной аппаратной платформе и представим результаты испытаний платформы на реальных сигналах ADS-B в аэропорту.

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

С появлением систем на кристалле (system on chip, SoC), таких как, например, компоненты семейства Zynq компании Xilinx, сочетающих универсальность центрального процессора и вычислительные мощности программируемой логики, разработчики получили возможность консолидировать все функции обработки данных системы SDR наряду с другими дополнительными функциями в одном устройстве. Задачи, требующие большого объема вычислений, например алгоритмы модуляции/демодуляции, реализуются в программируемой логике, а выполнение таких задач, как декодирование и интерпретация данных, мониторинг и диагностика системы и поддержка графического интерфейса пользователя, перекладываются на процессорное ядро.

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

Возможность прототипирования систем радиосвязи трансформирует саму организацию работы инженеров и ученых, позволяя перенести часть задач из лаборатории или места проведения натурных испытаний прямо за рабочий стол пользователя. Благодаря моделированию всей системы целиком инженер может наблюдать ее поведение и настраивать ее параметры до реальной реализации и проведения натурных экспериментов. Это дает ряд преимуществ, включая ускорение системной интеграции и уменьшение зависимости от доступности измерительного оборудования. Кроме того, по завершении создания модели системы SDR в Simulink из нее можно автоматически сгенерировать код на языках C и HDL для SoC Zynq, тем самым экономя время и избегая ошибок, возникающих при написании кода вручную. Дополнительное сокращение рисков достигается, если привязать модель к платформе быстрого прототипирования, которая позволяет исследовать поведение и характеристики системы SDR в реальных условиях.

 

Микросхемы SoC семейства Zynq в системах SDR

Для одновременной поддержки пользовательского интерфейса, протоколов связи и функций обработки данных при переменных требованиях к производительности вычислений и обработке в реальном времени необходимы продвинутые системы SDR.  Аппаратные платформы, выбираемые для реализации подобной системы, должны предусматривать масштабирование для оптимизации и дальнейшего расширения возможностей системы. Полностью программируемые микросхемы SoCs Zynq‑7000 компании Xilinx (рис. 1), сочетающие высокопроизводительную процессорную систему и программируемую логику, удовлетворяют всем указанным требованиям. Комбинация процессорной системы и программируемой логики обеспечивает превосходные возможности параллельных вычислений, производительность, необходимую для обработки в реальном времени, и широкий выбор вариантов интерфейса передачи данных.

Рис. 1. Блок-схема SoC Zynq компании Xilinx

Процессорная часть SoC Zynq состоит из двухъядерного процессора ARM Cortex-A9, сопроцессора NEON и аппаратных средств поддержки вычислений с плавающей точкой для ускорения исполнения программ. Чтобы в полной мере воспользоваться преимуществами системы на двухъядерном процессоре ARM, может быть запущена операционная система (ОС) Linux для встраиваемых систем или ОС реального времени (ОСРВ). Процессорная система является самодостаточной, и для работы с ней не требуется конфигурирование программируемой логики. Эта особенность крайне важна для разработчиков ПО, которым желательно начать создание кода параллельно с разработчиками аппаратной части, отвечающими за проектирование топологии FPGA.

На стороне программируемой логики компонент содержит до 444 000 логических ячеек и до 2200 элементов DSP, которые дают огромную производительность, позволяющую компонентам семейства Zynq решать самые различные задачи обработки сигналов с большим объемом вычислений. Программируемая логика связана с процессорной системой при помощи пяти быстродействующих шин AMBA‑4 AXI с широкой пропускной способностью, эквивалентной более чем трем тысячам непосредственных соединений.

 

Конфигурируемый широкополосный радиотрансивер для систем SDR AD9361

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

Одними из наиболее важных продуктов данной линейки являются интегрированные схемы (ИС) конфигурируемых радиотрансиверов AD9361/AD9364. AD9361 (2×2) и AD9364 (1×1) — это высокопроизводительные, обладающие высокой степенью интеграции ИС радиотрансиверов, предназначенные для использования в архитектурах SDR для различных областей применения, включая инфраструктуру сетей радиосвязи, военную радиоэлектронику, контрольно-измерительную технику для испытания радиоэлектронной аппаратуры и универсальные программно определяемые радиоплатформы. Компоненты включают входной радиочастотный (РЧ) интерфейс и конфигурируемый аналого-цифровой тракт полосы модулирующих частот (baseband) с интегрированными синтезаторами, а также конфигурируемый интерфейс с процессором или FPGA, упрощающий проектирование системы. Трансиверы работают в спектре частот от 70 МГц до 6 ГГц, перекрывающем большинство лицензируемых и нелицензируемых диапазонов, и поддерживают обработку сигналов в каналах с полосой менее чем от 200 кГц до 56 МГц благодаря возможности программного изменения частоты дискретизации, коэффициента децимации и конфигурации цифровых фильтров.
Блок-схема AD9361 изображена на рис. 2.

Рис. 2. Блок-схема AD9361

Для того чтобы помочь разработчикам сократить время и ресурсы, затрачиваемые на создание законченного продукта, компания Analog Devices сделала еще один шаг вперед, предложив решения для систем SDR в виде полнофункциональной экосистемы быстрого проектирования и создания прототипов радиосистем на базе FPGA. Платы разработки и прототипирования AD-FMCOMMSx-EBZ — это семейство широкополосных аналоговых модулей в формате FMC, которые содержат ИС конфигурируемого радиотрансивера AD9361 или AD9364 либо сигнальный тракт из дискретных компонентов и обеспечивают непосредственное подключение к платформам разработки для FPGA компании Xilinx. Любое изменение конфигурации этих плат осуществляется исключительно программным способом без внесения модификаций в аппаратную часть. Платы сопровождаются драйверами для Linux и платформ без ОС, принципиальными электрическими схемами, схемами топологии печатных плат, а также вспомогательными справочными материалами, которые доступны для загрузки на соответствующих сайтах wiki компании Analog Devices.

Основные особенности различных платформ FMCOMMSx перечислены в таблице.

Таблица. Платформы FMCOMMSx

Платформа

Особенности

AD-FMCOMMS5-EBZ

Благодаря интеграции двух ИС конфигурируемого трансивера 2×2 AD9361 эта плата быстрого прототипирования систем SDR обеспечивает полную поддержку синхронизации четырех приемных и четырех передающих каналов,
позволяя создавать любой поднабор системы MIMO 4×4. Плата поддерживает работу в конфигурации, оптимизированной для диапазона 2,4 ГГц, и в конфигурации с широкой полосой от 70 МГц до 6 ГГц. Адрес страницы сайта wiki с информационными ресурсами: www.wiki.analog.com/resources/eval/user-guides/ad-fmcomms5-ebz/ссылка утрачена/

AD-FMCOMMS4-EBZ

Эта версия платы быстрого прототипирования систем SDR с одной ИС конфигурируемого радиотрансивера 1×1 AD9364 может быть программно сконфигурирована для обеспечения оптимальных характеристик в диапазоне частот от 2400–2500 МГц или работы в полном диапазоне перестройки частоты AD9364 от 70 МГц до 6 ГГц. Адрес страницы сайта wiki с информационными ресурсами: www.wiki.analog.com/resources/eval/user-guides/ad-fmcomms4-ebz/ссылка утрачена/

AD-FMCOMMS3-EBZ

Эта версия платы быстрого прототипирования систем SDR с одной ИС конфигурируемого радиотрансивера 2×2 AD9361 поддерживает полный диапазон перестройки частоты от 70 МГц до 6 ГГц. Она идеально подходит для разработчиков программно определяемых систем радиосвязи, которым необходима унифицированная платформа проектирования с возможностью изменения рабочей частоты в широком диапазоне. Адрес страницы сайта wiki с информационными ресурсами: www.wiki.analog.com/resources/eval/user-guides/ad-fmcomms3-ebz/ссылка утрачена/

AD-FMCOMMS2-EBZ

Эта плата быстрого прототипирования систем SDR с одной ИС конфигурируемого радиотрансивера 2×2 AD9361 оптимизирована для обеспечения наилучших характеристик радиотракта в области частот от 2400 до 2500 МГц.
Она идеально подходит для радиоинженеров, которым необходимо оптимизированное решение с характеристиками, полностью соответствующими параметрам, заявленным в техническом описании AD9361 для данного участка спектра радиочастот. Адрес страницы сайта wiki с информационными ресурсами: www.wiki.analog.com/resources/eval/user-guides/ad-fmcomms2-ebz/ссылка утрачена/

 

Платформа быстрого прототипирования систем SDR на базе микросхем SoC Zynq

Пример типового проекта

Вместе с платформами FMCOMMSx компания Analog Devices предлагает каркас полнофункционального проекта для среды разработки Vivado с драйверами для Linux или решения без ОС, который может быть использован как в целях создания прототипа, так и в составе готовой к производству системы. Инфраструктура, предоставляемая Analog Devices для поддержки плат FMCOMMSx в проектах на базе SoC Zynq, показана на рис. 3.

Рис. 3. Инфраструктура ПО и кода HDL, предоставляемых Analog Devices

Эта обобщенная блок-схема иллюстрирует основные составные блоки типового проекта Analog Devices для SoC Zynq. Для отображения графического интерфейса Linux на мониторе используется порт вывода HDMI, а клавиатуру и мышь можно подключить к порту USB 2. 0. Процессорная система ARM Cortex-A9 работает под управлением ОС Ubuntu Linux. Она содержит драйверы промышленных устройств ввода/вывода (industrial IO, IIO) Linux, необходимые для интерфейса с аппаратными модулями FMCOMMS компании Analog Devices, приложение IIO Oscilloscope (осциллограф) в пользовательском пространстве для мониторинга и управления, сервер libiio, позволяющий осуществлять сбор данных в реальном времени и управление системой по TCP совместно с клиентскими приложениями на удаленном компьютере, а также опциональные пользовательские приложения, в том числе код на языке C, генерируемый продуктом Embedded Coder для Simulink-модели контроллера.

Инфраструктура программного обеспечения

В основе всех драйверов Linux от Analog Devices лежит подсистема IIO, которая сейчас имеется в составе всех стандартных сборок ядра Linux. IIO Scope — это разработанное Analog Devices приложение Linux с открытым исходным кодом, исполняемое на двухъядерном процессоре ARM Cortex-A, интегрированном в SoC Zynq. Оно позволяет отображать в реальном времени данные, получаемые с любой платы Analog Devices в формате FMC, которая подключается к платформе на базе SoC Zynq. Данные могут отображаться в виде графиков во временной или частотной области, а также в виде графика фазового созвездия. Программа поддерживает сохранение данных в файл для последующего анализа в различных популярных форматах, включая формат с данными, разделяемыми запятыми, или формат файлов данных MATLAB (.mat). Графический интерфейс IIO Scope также позволяет отображать и вносить изменения в текущую конфигурацию плат FMC Analog Devices. Сервер libiio дает возможность собирать данные и управлять системой по протоколу TCP, используя клиентские программы на удаленном компьютере. Сервер работает на встраиваемой целевой платформе под управлением Linux и осуществляет обмен данными между целевой платформой и удаленным клиентом в реальном времени через протокол TCP. Данная библиотека скрывает низкоуровневые детали работы аппаратуры и обеспечивает простой, но полнофункциональный программный интерфейс, который может быть применен в сложных проектах. Ее модульная архитектура, хорошо проработанный прикладной программный интерфейс (API) и встроенные возможности сетевой передачи данных помогают пользователям создавать приложения, не только исполняемые на системе, к которой подключены устройства IIO, но и действующие удаленно по сети. Первоначально библиотека создавалась для Linux, но теперь работает и из ОС Windows, используя удаленный доступ к библиотеке. Она написана на языке С, распространяется по лицензии LGPL и имеет интерфейсы для C#, Python и MATLAB. Для интеграции в приложения MATLAB и Simulink доступен системный объект клиента IIO (MathWorks IIO). Он предназначен для обмена данными по сети Ethernet с аппаратной системой Analog Devices, которая подключена к платформе FPGA/SoC, действующей под управлением дистрибутива Linux от Analog Devices. Системный объект IIO позволяет выполнять в MATLAB или модели Simulink следующие функции:

  • потоковая передача данных в целевую систему и из целевой системы;
  • управление настройками целевой системы;
  • мониторинг различных параметров целевой системы.

Системный объект IIO (IIO System Object) доступен как в MATLAB, так и в Simulink. В первом случае он вызывается пользователем непосредственно из скрипта MATLAB, а во втором случае включается в состав модели Simulink в виде блока MATLAB System Block. Программное обеспечение для ОС Linux и инфраструктура кода HDL, предоставляемые Analog Devices для платформ FMCOMMS, совместно с инструментами от MathWorks и Xilinx образуют среду с отличными возможностями прототипирования систем SDR. Кроме того, отдельные компоненты могут быть интегрированы в окончательную версию системы, что помогает сократить время и стоимость полного цикла проектирования — от создания концепции до выпуска готового продукта.

Для того чтобы помочь разработчикам быстро освоить проектирование с использованием IIO System Object, Analog Devices предлагает несколько примеров для MATLAB и Simulink на основе этого интерфейса, включая приемник сигнала радиомаяка, приемник и передатчик сигналов квадратурной фазовой манипуляции (QPSK), а также приемник и передатчик LTE. В этих примерах платформы FMCOMMSx конфигурируются из IIO System Object и используются в качестве аналогового входного интерфейса, который осуществляет передачу и прием аналоговых сигналов по воздуху. Потоковая передача сигналов в целевую систему/из целевой системы происходит через IIO System Object. Вся остальная обработка сигналов выполняется в MATLAB или Simulink. На рис. 4 представлен снимок экрана с примером модели приемника сигнала радиомаяка, иллюстрирующим подключение IIO System Object к другим блокам Simulink.

Рис. 4. Модель приемника сигнала радиомаяка

Поддержка SoC Zynq в продуктах MathWorks

Поддержка систем SDR на базе SoC Zynq в продуктах MathWorks имеет четыре аспекта.

 

Модель AD9361 для Simulink

Поскольку AD9361 — полностью интегрированная микросхема радиотрансивера, доступ к ее внутренним сигналам и мониторинг ее внутренних блоков невозможен. Поэтому компаниями MathWorks и Analog Devices была совместно разработана модель SimRF AD9361. Она позволяет пользователю промоделировать поведение микросхемы, чтобы увидеть происходящее внутри и то, как микросхема ведет себя в различных тестовых условиях, которые трудно воспроизвести в реальной жизни. SimRF — инструмент моделирования и библиотека компонентов для проектирования радиосистем с использованием эквивалентных блоков, работающих с комплексным сигналом полосы модулирующих частот, включая модели усилителей, смесителей и обобщенные модели с загружаемыми S‑параметрами. Данный инструмент отлично подходит для моделирования радиотрансивера AD9361. Модель системного уровня AD9361, изображенная на рис. 5, в точности повторяет функциональность AD9361 и доступна для загрузки в составе пакета поддержки аппаратной платформы для MathWorks.

Рис. 5. Модель конфигурируемого радиотрансивера AD9361 в MathWorks SimRF

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

Модели SimRF трансивера AD9361 позволяют пользователям:

  • предсказывать влияние отличия характеристик ВЧ-схем от идеальных на тестовые сигналы;
  • использовать тональные сигналы или сигналы LTE в качестве входных воздействий;
  • генерировать или импортировать тестовые векторы и оценивать влияние нелинейности, шума, дисбаланса коэффициента усиления и фазы, «размывания» спектральных составляющих, а также других эффектов, вносимых радиопередатчиком и радиоприемником;
  • добавлять мешающие сигналы и наблюдать их влияние на характеристики во временной или частотной области.

 

Функции Communications и DSP System Toolbox

Продукты MathWorks, включая Communi-cations System Toolbox, Signal Processing Toolbox, DSP System Toolbox и SimRF, содержат набор функций, реализующих стандартные алгоритмы для систематического анализа, проектирования и оптимизации систем SDR. Совокупность этих инструментов образует средство создания высокоточных моделей систем SDR, которые могут быть использованы для верификации поведения и характеристик систем связи перед переходом к реальной физической реализации.

 

Маршрут проектирования для SoC Zynq в Simulink

Продукты MATLAB и Simulink компании MathWorks образуют среду моделирования и модельно-ориентированного проектирования, которая отлично подходит для моделирования алгоритмов, применяемых в системах SDR. Эти алгоритмы могут включать, например, алгоритмы регулировки коэффициента усиления, смещения частоты, смещения во времени и другие параметры, применяемые для оптимизации совместной работы передатчика и приемника. Оценка алгоритмов при помощи моделирования — эффективный способ определения практической пригодности проектов систем SDR, который также позволяет сократить время и стоимость разработки за счет уменьшения потребности в натурных испытаниях. На рис. 6 показан эффективный маршрут проектирования алгоритма работы системы связи, который включает следующие шаги:

  • построение точных моделей систем SDR при помощи библиотек, входящих в состав среды модельно-ориентированного проектирования;
  • моделирование поведения системы для проверки соответствия ее характеристик ожидаемым параметрам;
  • генерация кода на языках C и HDL для тестирования алгоритмов в режиме реального времени и практической реализации;
  • тестирование алгоритмов при помощи аппаратных прототипов.

Рис. 6. Маршрут проектирования алгоритма системы связи

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

 

Интеграция модели Simulink в комплект проектирования систем SDR на базе SoC Zynq

По завершении верификации алгоритма работы системы SDR в среде моделирования пользователь может сгенерировать код на языке С либо на языках VHDL или Verilog при помощи продуктов Embedded Coder и HDL Coder компании MathWorks, который будет перенесен в аппаратный прототип для тестирования и, наконец, в окончательную версию системы. На данном этапе уже должны быть сформированы требования к программной и аппаратной реализации, в том числе требования к разрядности чисел с фиксированной точкой и к временным соотношениям в системе. Автоматическая генерация кода помогает сократить время, необходимое для перехода от концепции к реализации реальной системы, и избежать ошибок, возникающих при написании кода вручную, гарантируя полное соответствие между системой и ее моделью. Шаги, предусматривающие процесс создания модели Simulink и ее превращения в реальную систему SDR на базе SoC Zynq компании Xilinx, показаны на рис. 7.

Рис. 7. Путь от моделирования к производству

Первый шаг — создание модели системы SDR и моделирование ее поведения в Simulink. На этом этапе алгоритм работы системы связи делится на составные части, которые будут реализованы в программном обеспечении, и составные части, которые будут реализованы в программируемой логике. По завершении этапа разбиения на составные части и моделирования модель системы SDR преобразуется в код на языках C и HDL с помощью Embedded Coder и HDL Coder соответственно. Для верификации алгоритма и дальнейшей оптимизации модели системы SDR перед переходом к этапу производства используется аппаратный прототип на базе SoC Zynq. На этапе производства автоматически сгенерированный код на языках C и HDL интегрируется в сложную аппаратную платформу. Данный маршрут проектирования гарантирует, что по достижении этапа производства алгоритм работы системы связи будет полностью проверен и протестирован, повышая, таким образом, уверенность в ее корректном функционировании. Пакеты поддержки аппаратных платформ на базе SoC Zynq для Embedded Coder и HDL Coder упрощают программирование платформы, обеспечивая основу для интеграции функций проектирования ПО/аппаратных средств, моделирования и верификации, сокращая количество итераций при разработке и помогая выявлять и исправлять ошибки в проекте и спецификациях на ранней стадии.

 

Заключение

В статье рассмотрены тенденции в проектировании современных систем SDR, требования, предъявляемые к ним, а также инструменты и средства, предлагаемые компаниями MathWorks, Xilinx и Analog Devices, которые помогают удовлетворить эти требования и делают возможным создание решений с лучшими характеристиками. Сочетание инструментов модельно-ориентированного проектирования и автоматической генерации кода от MathWorks с высокопроизводительными SoC Zynq Xilinx и интегрированными радиотрансиверами Analog Devices делает проектирование, верификацию, тестирование и практическую реализацию систем SDR эффективными, как никогда прежде, позволяя повысить технические характеристики и сократить цикл от задумки концепции до выпуска готового продукта. Комбинация платформ FMCOMMS Analog Devices и аппаратных средств на базе SoC Zynq‑7000, выпускаемых компанией Avnet, обеспечивает широкие возможности прототипирования алгоритмов для систем SDR, разрабатываемых в MATLAB и Simulink. Платформы FMCOMMS сопровождаются набором примеров типовых проектов с открытым программным кодом, которые могут быть использованы для ознакомительных целей и ускорения работы над созданием любой новой системы SDR.

В следующей статье серии мы продолжим знакомство с процессом проектирования систем SDR и рассмотрим характеристики сигналов ADS-B, а также покажем, как декодировать содержащуюся в них информацию при моделировании в MATLAB/Simulink.

Литература

  1. Hill T. Motor Drives Migrate to Zynq SoC with Help from MATLAB. Xcell Journal. Issue 87, Second Quarter, 2014.

Интервью с создателем первой российской среды моделирования SimInTech. Импортозамещение и конкуренция с matlab — Трибуна на vc.

ru

Инженеры по всему миру ведут разработку в среде MATLAB, это их любимый инструмент. А может ли российская IT-индустрия предложить достойную альтернативу дорогому американскому софту?

1027 просмотров

С этим вопросом я пришла к Вячеславу Петухову, основателю компании «3В Сервис», которая производит отечественную среду моделирования и разработки SimInTech. После попытки продать свою разработку в Америке он вернулся в Россию и делает конкурента MATLAB здесь.

Поговорили о трудностях внедрения сложного IT-продукта на российский рынок, маркетинге «на грани», принципах работы SimInTech и её преимуществах перед MATLAB.

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

Фаря:
— На чём написана среда SimInTech?

Вячеслав Петухов:
— Изначально и сейчас она написана на Паскале.

— Серьёзно? Кто-то на нем еще пишет?

— Да. Он спокойно себе развивается, Скайп был написан на Delphi. Когда мы начинали разработку это была чуть ли не первая среда, в которой можно было быстро набрать код, не заморачиваясь, и заняться сутью.

— Если сравнивать с MATLAB, то какие библиотеки SimInTech, по твоему мнению, самые сильные сейчас, какие еще недоработанные, какие планируется доработать?

— Математическое ядро уже готово, можно использовать. Готова гидравлика. Кипение воды в трубах и работа турбины – это основа, то, с чего всё начиналось. Один заказчик долго пытался посчитать с помощью MATLAB, но в итоге у него ничего не заработало, у нас эта задачка буквально через день была решена.

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

— А что на счет автоматической генерации кода? matlab этим очень кичится.

— Это смешно. Матлабовская кодогенерация – это просто смех. Если говорить про наш продукт, то теперь операторы АЭС открывают ноутбук на станции, открывают схему в SimIntech, подключают к стойке, которая управляет реактором, и правят эту схему. Программиста нет.

***

— Мне кажется, это очень интересная история, что вы делаете свой сложный российский продукт, но почему у вас такой жесткий маркетинг? Почему в каждую дырку (отверстие) нужно обязательно вставлять «MATLAB»?

— Потому что изначально все наши коммерческие проекты начинались тем, где обкакивался матлаб. Я считаю, что его у нас используют все, это стандарт де-факто, они на рынке, все их знают. И вот мы приходим и говорим: «У нас есть всё то же самое, только лучше». Но часто возникает проблема, если приходишь с российским продуктом: «Это что, импортозамещение? Взяли, денег намыли, теперь нам пытаются впарить «это» …»

— Вот одна из твоих цитат из ВКонтакте:

И при этом ты говоришь, что по отношению к SimInTech понятие «импортозамещение» употреблять не стоит. Хотя тут сам на это и намекаешь.

— Здесь написано, что ВУЗ заплатил 25 000 000 ₽. За что? Зачем ВУЗу на 25 000 000 ₽ покупать MATLAB?

— А зачем ему SimInTech покупать?

— SimInTech не надо покупать. Качай и учи. Передаточные функции, фазочастотный анализ, устойчивость. Это всё можно делать бесплатно. У нас можно качать демоверсию и в ней всё это делать.

— И сколько эта демоверсия доступна?

— Нет ограничений по времени, но есть ограничение по сложности – 250 блоков. Для обучения это выше крыши. Не надо тратить деньги на американцев.

— Часто вижу твои комментарии в соцсетях и на Хабре с возмущениями про MATLAB. «Они, что-то делали и MATLAB посчитать не смог, а вот у нас считает». Но для человека, который работает в MATLAB, это значит, что он просто недоразобрался. Открываешь документацию, и все получается.

— Это понятно. Но моя задача – тебе продать. Как еще я тебе продам, если ты пользуешься MATLAB? Ты позовёшь своих инженеров и скажешь им: «Вот пришли ребята, хотят нам предложить аналог MATLAB». А у инженера в матлабе наработана библиотека и куча всего. Он откроет SimInTech и скажет: «Ой, да у вас интерфейс не такой, да у вас линии неправильные рисуются и т.д».

— Так в этом же и заключается проблема бизнеса. Многие компании, которые, пытаются продать какой-либо продукт, идут на ухищрения. Устраивают тренинги, показывают товар «лицом»…

— Наш заказчик к нам придёт, потому что у него проблема с MATLAB. А те, у кого нет проблем, кого всё устраивает, в принципе, не наши заказчики. Они не придут. Мне нужно, чтобы все знали, что SimInTech – это то же самое, что MATLAB, но лучше.

— То есть ты за счёт MATLAB пиаришься?

— Ну да.

***

— А зачем ты приходил к конкурентам в Софтлайн (дистрибьюторы MATLAB)?

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

— Чем закончилась ваша встреча?

— Их директор сказал: «Мне не интересно, у меня и так всё хорошо». Не захотел участвовать в процессе маркетингового сопровождения: уроки, презентации, материалы, учебная литература. Я хотел, чтобы Софтлайн, как он продаёт MATLAB, продавал SimInTech. Деньги, которые сейчас уходят в Америку, можно было бы оставлять у себя и делить с нами.

— Очень амбициозно…

Если вам понравилось, приглашаю к просмотру полной версии.

Пишите в комменты, что вы думаете о разработке отечественных аналогов продвинутого импортного ПО.

Как мне остановить Matlab-prettifier, думая, что строки печати являются комментариями? – ТеХ

спросил

Изменено 1 год, 8 месяцев назад

Просмотрено 358 раз

Я пытаюсь поместить свой код в документ Latex, используя matlab-prettifier. Я делаю это с помощью \lstinputlisting[style=Matlab-editor]{Trap.m}.

Пример Trap.m (файл MATLAB) выглядит следующим образом:

 Размер шага = 5
sub_int=100
fprintf("Чтобы получить оценку с точностью до двух знаков после запятой, нам нужен размер шага %f, который равен %.0f интервалов. \n", step_size, sub_int)
 

Когда я запускаю matlab-prettifier, он предполагает, что после «%» строка на самом деле является комментарием, а не оператором. Поскольку он предназначен для ввода числа с плавающей запятой в строку, цвет должен быть черным. Я не уверен, как это исправить.

Я включил MWE ниже для латекса.

 \documentclass{статья}
\usepackage{matlab-prettifier}
Текст...
\lstinputlisting[style=Matlab-editor]{Trap.m}
 

  • комментарии
  • строки
  • matlab
  • matlab-prettifier

3

Вы можете использовать одинарные кавычки вместо двойных кавычек, чтобы заключить строку

Или же вы можете определить какой-либо escape-символ и поместить ‘%’ внутри escape-символов. Вот МВЕ.

 \documentclass{статья}
\usepackage{matlab-prettifier}
\lstset{
escapechar = `,
    }
\начать{документ}
Текст...
\lstinputlisting[style=Matlab-editor]{Trap.m}
\конец{документ}
 

Trap.m

 размер шага = 5
sub_int=100
fprintf('Чтобы получить оценку с точностью до двух знаков после запятой, нам нужен размер шага %f, который равен %.0f интервалов. \n', step_size, sub_int)
fprintf("Чтобы получить оценку с точностью до двух знаков после запятой, нам нужен размер шага `\%`f, что равно `\%`.0f интервалов. \n", step_size, sub_int)
 

Выход:

Попробуйте:

 \lstset{style=Matlab-editor}
\lstset{morestring=[м]"}
\lstinputlisting{имя файла.m}
 

Это действительно должно быть добавлено в файл стиля, возможно, с опцией версии, чтобы код с ошибками до 2017 года по-прежнему выделялся «правильно», но CTAN не перечисляет репозиторий, поэтому я не могу просто отправить запрос на включение .

Зарегистрируйтесь или войдите в систему

Зарегистрируйтесь с помощью Google

Зарегистрироваться через Facebook

Зарегистрируйтесь, используя электронную почту и пароль

Опубликовать как гость

Электронная почта

Требуется, но никогда не отображается

Опубликовать как гость

Электронная почта

Требуется, но не отображается

Нажимая «Опубликовать свой ответ», вы соглашаетесь с нашими условиями обслуживания, политикой конфиденциальности и политикой использования файлов cookie

.

Основные команды в MATLAB – Руководство по MATLAB для ME 160

Введение

Чтобы приступить к написанию кода в MATLAB, необходимо выполнить несколько команд, чтобы начать работу с программой. Команда — это основная инструкция, которую пользователь дает программе. Эти инструкции, если они даны правильно, заставляют MATLAB выводить ответ, такой как распечатка решения проблемы, выполнение шага в более крупном процессе или передача информации о коде. В этой главе подробно описаны несколько общих команд, которые часто будут использоваться при написании скриптов. Пользовательский интерфейс MATLAB включает в себя командное окно, разработанное специально для облегчения выполнения пользователем простых команд или взаимодействия с определенными частями более крупных кодов, которые будут рассмотрены при обсуждении сценариев. Командное окно и команды как понятие являются фундаментальными понятиями кодирования. В результате следующая глава была написана для того, чтобы проинструктировать пользователей о разнообразии, эффектах и ​​синтаксисе, необходимых для использования команд в более широком контексте MATLAB.

Справочные ресурсы

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

При написании кода для ME 160 у пользователя есть несколько способов узнать больше о функциях и их операциях во время написания кода. Когда пользователь знает название команды и хочет узнать больше о ее функции или о том, как она должна быть записана в коде, пользователь должен использовать команду справки. Например, чтобы узнать больше о функции if, пользователь может указать время в командном окне.

Многие другие ресурсы существуют вне программы как на веб-странице MathWorks, так и на ресурсах, созданных сторонними поставщиками. Приложение I к этому тексту обсуждает многие ресурсы, которые предоставляются за пределами самого программного обеспечения MATLAB. В частности, ресурсы, представленные на странице документации, наиболее ценны в контексте ME 160. На страницу документации для конкретной функции можно перейти, перейдя по гиперссылке внизу страницы справки в MATLAB или выполнив поиск «MathWorks MATLAB Documentation». » в поисковике.

Поскольку читатель, скорее всего, только начинает программировать в MATLAB, интерактивные учебные пособия, предлагаемые на веб-странице MathWorks, могут оказаться ценным дополнением к работе в классе. Компания Mathworks предоставила множество интерактивных учебных пособий по программированию в MATLAB, которые позволяют пользователю выполнять упражнения в виртуальном курсе «MATLAB Onramp». Для получения дополнительной информации об интерактивных программах MathWorks обратитесь к Приложению I в конце этого текста.

Комментарии

Комментарии — это встроенный способ, с помощью которого MATLAB позволяет пользователям делать примечания в коде, не влияя на функцию кода. Чтобы сделать комментарий в коде, пользователь может ввести % в начале строки кода. Затем MATLAB будет игнорировать все, что набирается после этого знака процента, позволяя пользователю вводить информацию о функции кода или о том, что делает часть кода. Комментарии необходимы для написания эффективных длинных кодов, которые могут быть легко прочитаны и отредактированы как первоначальным автором, так и его коллегами. Размещая много комментариев в кодах в ME 160, автор гарантирует, что код легко читается и редактируется им самим, их коллегами и преподавателями, оценивающими окончательные коды. Формирование привычки часто комментировать код имеет решающее значение для обеспечения того, чтобы коды, созданные в ME 160, были полезными и эффективными.

Комментарии также были разработаны, чтобы помочь пользователям, которые редактируют код и хотели бы «отключить» раздел кода. В случае, когда часть кода в скрипте MATLAB не работает или не должна выполняться, пользователь может поместить комментарии со знаками % в начале каждой строки, которые код должен игнорировать. Чтобы ускорить процесс «комментирования» больших участков кода, в MATLAB были созданы обозначения %{ и %}, которые можно размещать в разных строках кода и которые будут комментировать все написанное в строках кода между символами. Ниже приведен пример стандартных комментариев и блочного комментария. В примере часть кода, который работает некорректно, была закомментирована, и было сделано примечание для исправления кода. Комментарии, подобные комментариям в третьей строке, необходимы для того, чтобы коды были как можно более разборчивы для всех пользователей.

Арифметика в MATLAB

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

Общие операции

Чтобы завершить сложение, вычитание, умножение или деление, пользователь должен быть точным в том, как он пишет свои выражения. На прилагаемом изображении показано, как правильно выполнять операции ввода. Первое, на что следует обратить внимание пользователю, — это отсутствие знака равенства в математических операциях. MATLAB использует одиночные знаки равенства для присвоения значения переменной, а это не то, что мы хотим делать при решении выражения. Вместо этого нажмите клавишу ввода без ввода знака равенства, чтобы указать MATLAB решить выражение. Обратите внимание, что операции не зависят от наличия пробелов между числовыми значениями и оператором. Для умножения и деления используйте звездочку ( 9(1/2). Функцию sqrt также можно записать с помощью функции sqrt() , при этом все значения, находящиеся под корнем, заключаются в круглые скобки.

 

Вычисление выражений с использованием логарифмов и экспонент также легко выполняется с помощью MATLAB. Чтобы вычислить логарифм по основанию 10, используйте функцию « log(x) », где x — числовое значение логарифма. Аналогичным образом значения, возведенные в степень e, можно записать с помощью « exp(x) », который будет введен как « exp(4) » в MATLAB.

Тригонометрия в MATLAB

MATLAB по умолчанию использует радианы для вычисления градусов, что требует от пользователя осторожности при вводе углов, чтобы гарантировать правильное вычисление значения. Функции Degree() и radian() можно использовать для преобразования между углом в градусах и углом в радианах. При вычислении тригонометрических операций, таких как sin() или cos() в MATLAB, альтернативная функция sind() , cosd() или tand() может использоваться для информирования MATLAB о том, что значение, введенное в тригонометрической операции, находится в градусах. Это избавляет пользователя от необходимости конвертировать радианы в градусы.

 

Сложные выражения

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

Оставить комментарий