Может ли кто-нибудь, имеющий доступ к новому продукту "Matlab Coder", показать какой-нибудь вывод перевода на C? - PullRequest
11 голосов
/ 11 апреля 2011

Matlab Coder - недавно выпущенный продукт MathWorks.Насколько я понимаю, это компилятор Matlab-to-C с наибольшим преимуществом по сравнению с предыдущими решениями, заключающимся в том, что результирующая программа не должна быть связана с общей библиотекой Matlab.подтвердить вышесказанное?Каковы зависимости переведенных программ и о какой производительности мы говорим?Также мне бы очень хотелось увидеть некоторые примеры выходных данных, чтобы узнать, можно ли понять и улучшить полученные программы на C без доступа к исходному коду Matlab.

Если все сделано правильно, это может быть очень мощным, позволяя быстро создавать прототипы в Matlabи мгновенное преобразование в C, когда все становится серьезно.Я вроде как не очень хорошо работаю, поэтому Python + Numpy + Scipy.weave все еще лучше ^^.

Ответы [ 2 ]

5 голосов
/ 26 апреля 2011

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

RE: использование BLAS для умножения матриц - хотя сгенерированный код C автоматически не включает в себя какие-либо специфичные для процессора / платформы оптимизации, есть функция, называемая Target Function Library, которая позволяет пользователям писать собственную реализацию примитивных операций например, умножение матриц), и включить их в сгенерированный код. С помощью этого метода вы можете подключить библиотеки BLAS к MATLAB Coder. Также имеется возможность включать оптимизированные вызовы, специфичные для процессора, для более крупных функций посредством интеграции пользовательского кода и условной компиляции, которая позволяет указать один набор кода, который будет использоваться для генерации кода, и другой набор для моделирования (например, оптимизированная функция FIR для Texas Инструменты DSP и функционально эквивалентный код для симуляции, который может выполняться на вашем ПК, написанный на C или в MATLAB).

Надеюсь, это полезно - Арвинд Анантан; Менеджер по продукту для MATLAB Coder; MathWorks

2 голосов
/ 22 апреля 2011

Я использую Matlab Coder с Real Time Workshop (RTW) для генерации автономного стандартного кода C.

Прежде всего вас попросят использовать подмножество Matlab под названием "Embedded Matlab", которое вы можете найтидокумент об этом в Интернете

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

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

еще одна вещь, о которой вы должны позаботиться, это объявить постоянные большие типы данных (векторы, большие массивы и т. Д.), Иначе они будут размещены в вашем стеке ...

удачи!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...