Фон
Скажем, я скомпилировал следующую простую функцию в MATLAB
function foo(path_to_m_file)
disp([' Running ' path_to_m_file])
run(path_to_m_file);
end
Функция foo
просто берет путь к файлу .m и пытаетсячтобы запустить его.
Однако, когда я на самом деле пытаюсь запустить foo
после его компиляции:
./run_foo.sh $path_to_run_time $path_to_m_file
, где path_to_m_file
- это простой .m файлс таким утверждением, как:
a = 2;
Я получаю следующую ошибку:
Error using ==> run
MATLAB:run:FileNotFound
Однако я знаю, что foo
получает правильный путь.Например, если я попытаюсь заменить строку с run
на следующие две строки, то foo
fID = fopen(conf_file, 'rt');
first_line = textscan(fID, '%s', Inf, 'Delimiter', '\n');
foo
прочитает соответствующую строку файла .m
.Таким образом, файл .m
находится там, и механизм MATLAB может его «увидеть».В самом деле, я даже могу запустить eval
на строках, прочитанных с textscan
.
Так что мои вопросы:
Почему я получаю ошибку выше?Почему foo
не запускает файл .m
?
Обновление: См. Приведенный ниже ответ @ strictrude27, который, кажется, является ответом на этот вопрос.
- Если вышеупомянутое не работает.Есть ли способ получить скомпилированную MATLAB функцию для запуска файла .m , который мог измениться после компиляции исходной функции?
Мотивациядля моего второго вопроса:
Я хотел бы иметь возможность "обновить" файл .m
, который является частью проекта, без необходимости повторной компиляции всего проекта.Любая идея для этого будет принята с благодарностью.