Я запускаю свой код в Matlab. Но я также хочу вызвать функцию в октаве. Как мне импортировать функцию qp
Octave в Matlab?Как импортировать функцию Octave в MATLAB?
ответ
так скажем, у вас есть 2 файла в одном каталоге. a.m
и b.m
В сценарии b.m
если вы наберете a
как строка кода все в утра будет происходить (присвоения переменных определений функций вычисления и т.д. ...)
Кроме того, вы можете использовать import
заявление для добавления вещей в список импорта , как видно here.
Octave syntaxt не полностью совместим с MATLAB. Например, предпочтительный синтаксис для определения функции в октаве, как это:
function ret = f()
%do something
endfunction
но MATLAB не принимает этот синтаксис и есть другие различия, как различия в вызове родные кодов и ... так что это не просто конвертировать каждую инструкцию октавной библиотеки в matlab или конвертировать oct
C++ source в mex.
Простым способом является то, что вы должны иметь установку Octave и запускать октавный скрипт, а затем сохранять результаты в файл мата, а в MATLAB загружать файл. Вы можете использовать функцию system для выполнения октавы или запуска ее из оболочки.
Октавный язык является надмножеством языка Matlab. Если qp
использовал только язык Matlab, вы можете просто добавить его в свой путь Matlab и сделать с ним.
Однако Octave's qp
широко использует язык Octave, поэтому вам в основном нужно портировать код самостоятельно. Для этого нет инструментов, вам нужно преобразовать код с одного языка на другой. Кроме того, фактический решатель - это функция __qp__
, которая написана на C++ и использует liboctave. Два легче альтернативы, чем портирование qp
являются:
сохранить данные из вашей Matlab сессии в файл
save foo.mat mydata
, вызовите октаву, чтобы сделать работу и сохранить результатыsystem ('octave --eval ''load ("foo.mat"); qp (...); save foo.mat ...;'
и прочитать файл обратноload foo.mat
.или гораздо более простая альтернатива, просто используйте Octave.
У меня чувство «импорт» не работает так, как вы думаете. – Suever
Прочитайте, что делает цель 'import' на этой странице документации .... очень тщательно. Согласуется ли это с вашими рассуждениями здесь? * Подсказка: код в этом вопросе, скорее всего, не ** объектно-ориентированный в дизайне *. – rayryeng