Я адаптировал perl.m
к python.m
и прикрепил его для справки для других, но я не могу получить какой-либо вывод из скриптов Python для возврата в переменную MATLAB: (
Вот мой М-файл; Обратите внимание, что я указываю прямо на папку Python, C:\python27_64
, в моем коде, и это изменится в вашей системе.
function [result status] = python(varargin)
cmdString = '';
for i = 1:nargin
thisArg = varargin{i};
if isempty(thisArg) || ~ischar(thisArg)
error('MATLAB:python:InputsMustBeStrings', 'All input arguments must be valid strings.');
end
if i==1
if exist(thisArg, 'file')==2
if isempty(dir(thisArg))
thisArg = which(thisArg);
end
else
error('MATLAB:python:FileNotFound', 'Unable to find Python file: %s', thisArg);
end
end
if any(thisArg == ' ')
thisArg = ['"', thisArg, '"'];
end
cmdString = [cmdString, ' ', thisArg];
end
errTxtNoPython = 'Unable to find Python executable.';
if isempty(cmdString)
error('MATLAB:python:NoPythonCommand', 'No python command specified');
elseif ispc
pythonCmd = 'C:\python27_64';
cmdString = ['python' cmdString];
pythonCmd = ['set PATH=',pythonCmd, ';%PATH%&' cmdString];
[status, result] = dos(pythonCmd)
else
[status ignore] = unix('which python'); %#ok
if (status == 0)
cmdString = ['python', cmdString];
[status, result] = unix(cmdString);
else
error('MATLAB:python:NoExecutable', errTxtNoPython);
end
end
if nargout < 2 && status~=0
error('MATLAB:python:ExecutionError', ...
'System error: %sCommand executed: %s', result, cmdString);
end
РЕДАКТИРОВАТЬ:
Решил мою проблему, исходный perl.m указывает на установку Perl в папке MATLAB, обновив PATH и затем вызвав Perl. Функция выше указывает на мою установку Python. Когда я вызвал мой function.py
файл, он находился в другом каталоге и назвал другие файлы в этом каталоге. Они не отражены в PATH , и мне пришлось легко_установить мои файлы Python в мой дистрибутив Python.