使用python运行matlab .m文件

时间:2014-01-04 06:43:22

标签: python matlab

我有一个matlab文件(.m),我想用python运行这个文件。我的ubuntu系统上没有matlab。我还可以运行matlab文件吗?

isomonotone.m

% Checks vector v for monotonicity, and returns the direction (increasing,  
% decreasing, constant, or none).
%
% Meaning of parameter tol:
% - if tol==0, check for non-increasing or non-decreasing sequence (default).
% - if tol>0, allow backward steps of size <= tol
% - if tol<0, require forward steps of size >= tol
%
% Inputs
%  v:   vector to check for monotonicity
%  tol: see above
% 
% Outputs
%  b: a bitfield indicating monotonicity.  Can be tested as follows:
%   bitand(b,1)==true  -->  v is increasing (within tolerance)
%   bitand(b,2)==true  -->  v is decreasing (within tolerance)
%   bitand(b,3)==true  -->  v is both increasing and decreasing
%                           (i.e. v is constant, within tolerance).
% --------------------------------------------------------------------------
function b = ismonotone( v, tol )
  if ( nargin < 2 )
    tol = 0;
  end

  b = 0;
  dv = diff(v);
  if ( min(dv) >= -tol ) b = bitor( b, 1 ); end
  if ( max(dv) <= tol ) b = bitor( b, 2 ); end
end


%!test assert(ismonotone(linspace(0,1,20)),1);
%!test assert(ismonotone(linspace(1,0,20)),2);
%!test assert(ismonotone(zeros(1,100)),3);
%!test
%! v=[0 -0.01 0 0 0.01 0.25 1];
%! assert(ismonotone(v,0.011),1);
%! assert(ismonotone(-v,0.011),2);

我可以使用python运行这个文件而不需要在我的ubuntu上使用matlab吗?

3 个答案:

答案 0 :(得分:2)

您可以从Ubuntu存储库安装Octave(或者下载并安装最新的 - 更多的工作)

在此文件所在的目录中启动Octave,允许我运行%!测试,因此:

octave:1> test ismonotone
PASSES 4 out of 4 tests

事实上,%!的存在表明此文件最初是为Octave编写的。有人可以确认MATLAB是否可以处理这些doctest行吗?

编辑 - 添加交互式示例

octave:1> ismonotone(linspace(0,1,20))
ans =  1
octave:2> ismonotone(zeros(1,100))
ans =  3

或者来自linux shell

1424:~/myml$ octave -fq --eval 'ismonotone(linspace(0,1,20))'
ans =  1

对于曾经从shell运行Python脚本的人来说,Octave比MATLAB更友好。启动开销要小得多,命令行选项也比较熟悉。在交互模式下,doc打开一个熟悉的UNIX信息系统。

答案 1 :(得分:1)

你试过了吗?  1. Small Matlab to Python compiler  2. LiberMate  3.使用SciPy模块重写代码。

希望这有帮助

答案 2 :(得分:0)

Python无法本机运行Matlab程序。您可能需要在 Python中重写此,可能使用SciPy库。