通过matlab执行批处理文件命令时遇到问题。此批处理文件包含在Adams中运行模拟的命令。当我直接从DOS窗口执行批处理文件时,它运行良好。但是如果我使用matlab来执行它(使用命令dos()
),它会给出“无法检查Adams许可证”的错误。
这让我感到困惑:如果许可证不正确,无论我直接在DOS中执行批处理文件还是要求MATLAB执行它,它都不应该工作。我还尝试使用dos()
通过matlab执行其他DOS命令,但效果很好。
有谁知道问题可能是什么?
答案 0 :(得分:0)
这些问题通常是由MATLAB更改或清除的某些环境变量引起的。我在Linux和Mac OS X上有非常相似的经历,这会在使用system
或unix
时造成严重破坏。
在类Unix系统中,MATLAB是从shell脚本启动的,所有这些都发生在shell脚本中。因此,您可以在那里或在主目录中的.matlab7rc.sh
中包含缺少的变量(后者在升级MATLAB时保留,并且更容易使用)。我不会在这里详细介绍所有的Unix细节。
另一种解决方法是在发出system
命令时明确设置这些变量(例如system('export variable=value ; ...')
)。这是相当多的工作,但您可以轻松地在不同的计算机上使用该MATLAB代码。
在Windows上,我不完全确定相应文件的确切位置(以及MATLAB是否以与Unix上类似的方式启动)。但如果它们存在,您可以在MATLAB文档中找到它。 无论如何,替代修复也应该在这里工作。
首先,您需要诊断所需的系统变量(可能是PATH
或任何与Adams相关的名称)。
要在Windows中执行此操作,请从Windows命令提示符(set
)和MATLAB中运行cmd.exe
。无论输出的不同,都可能怀疑您的问题。
要仅检查单个变量,可以使用命令echo %variablename%
。
我将假设您发现suspect
环境变量已丢失且应设置为value
。
然后,解决方法修复程序在MATLAB中以system('set suspect=value & ...')
运行您的命令,并用原始命令替换...
。