Теперь о том, как я узнавал, какая функция чего делает.
В MATLAB встроен транслятор mcc, переводящий скрипты MATLAB в текст программы на языке Си. Набиваем help mcc, среди кучи опций будет такая (вторая по счету):
Цитата:
e External. Translate M-file to a C-file that may be linked
with the MATLAB C Math Library and executed outside of the
MATLAB environment. Compile into stand-alone application
when file name is "main.m" or a C-file is specified.
See the m option.
Похоже, это то что надо, если хочешь использовать MATLAB C Math Library в своей проге, и что бы после сборки она работала без установленного MATLAB'а.
Мне захотелось узнать, что за функции выполняют матричное деление, умножение и сложение. Я написал следующий файл(division.m):
Код:
function y = division(a, b)
x = a/b;
c = a*b;
y = c+x;
и в окне команд набрал:
mcc -e division.m
после чего у меня образовался файл division.с длиной примерно в 220 строк (я уж не буду его тут приводить). 99% этого текста - ненужная лирика, но из него удалось понять, что деление выполняет процедура mccRightDivide(x, a, b) для комплексных чисел и mccRealRightDivide(x, a, b) для вещественных, первый операнд - результат, второй - делимое, третий - делитель. Аналогично, умножение для комплексных и вещественных матриц выполняют процедуры mccMultiply(y, a, b) и mccRealMatrixMultiply(y, a, b) соответственно. Процедуры сложения, увы, нет - сложение делается "ручками", в цикле.