如何以编程方式从Freemat中告诉MATLAB?

时间:2013-11-19 11:09:23

标签: matlab portability freemat

我需要在MATLAB和Freemat中运行一些代码,在每种情况下使用不同的服务函数。为了使整个事物变得可移植,我需要找到一种方法来确定在我的代码开始时调用哪些函数,具体取决于我所处的环境。

如何做到这一点?

我正在考虑使用版本命令,但不太确定这是否非常强大。

2 个答案:

答案 0 :(得分:3)

verstring \ try的上下文中使用catch,matlab中的输出将是一个错误,而在Freemat中,它将类似于“freemat 4.0”,例如:

try
    txt=verstring;
    output='Freemat';
catch err
    output='Matlab';
end

答案 1 :(得分:2)

我会尝试识别每个,如果不确定则给出错误,或者要求用户在这种情况下手动识别它:

% try to identify if it is freeMat
isDefinatelyFreeMat = false;
try
    versionIdentifier=verstring;
    if (strcmpi(versionIdentifier(1:7), 'FreeMat'))
        isDefinatelyFreeMat = true;
    end
catch e
end

% try to identify if it is Matlab
isDefinatelyMatlab = false;
try
    versionIdentifier=ver;
    if (strcmpi(versionIdentifier.Name, 'Matlab'))
        isDefinatelyMatlab = true;
    end
catch e
end

% if identification was not successful
if ((isDefinatelyFreeMat && isDefinatelyMatlab) || (~isDefinatelyFreeMat && ~isDefinatelyMatlab))
    error('Was unable to identify software.');
    % TODO: Ask user to identify software manually
end