2014-09-15 5 views
0

У меня возникла проблема при выполнении команд командного файла через matlab. Этот командный файл содержит команды для запуска моделирования в Adams. Когда я исполняю пакетный файл непосредственно из окна DOS, он работает хорошо. Но если я использую matlab для его выполнения (используя команду dos()), он дает ошибку, говоря «не могу проверить лицензию на Adams».Выполнение пакетного файла с использованием dos()

Это меня смущает: если лицензия неверна, она не должна работать независимо от того, выполняю ли командный файл непосредственно в DOS или прошу MATLAB выполнить его. Я также попытался выполнить другие команды DOS через matlab, используя dos(), и он работал хорошо.

Кто-нибудь знает, в чем проблема?

+0

Что такое * Adams *? Откуда вы знаете, что лицензия доступна, когда вы пытаетесь использовать Matlab? – Schorsch

+0

Adams - это программное обеспечение, которое я использую для моделирования. Используя командный файл, я могу начать симуляцию автоматически. Если имитация работает, значит, лицензия в порядке. В моем случае лицензия действительно доступна. В противном случае я не буду работать, выполняя командный файл в DOS. – open0121

+0

Возможно ли, что это проблема с текущим каталогом, не относящимся к Adams? Попробуйте добавить 'cd [whereverAdamsIs]' в начало пакетного файла. – Pokechu22

ответ

0

Такие проблемы обычно вызваны изменением или очисткой переменных среды MATLAB. У меня очень похожий опыт в Linux и Mac OS X, где это приводит к хаосу при использовании system или unix.

В Unix-подобных системах MATLAB запускается из сценария оболочки, где все это происходит. Таким образом, вы можете либо включать отсутствующие переменные, либо в .matlab7rc.sh в свой домашний каталог (последний сохраняется при обновлении MATLAB, и это намного проще в использовании). Здесь я не буду вдаваться в подробности Unix. Альтернативный способ заключается в том, чтобы явно установить эти переменные при выдаче команды system (например, system('export variable=value ; ...')). Это довольно много работы, но вы можете с легкостью использовать этот код MATLAB на разных компьютерах.

В Windows я не совсем уверен в точном расположении соответствующих файлов (и запускается ли MATLAB совсем так же, как в Unix). Но если они существуют, вы можете найти его в документации MATLAB. Во всяком случае, альтернативное исправление должно работать и здесь.

Сначала вам нужно диагностировать, какие системные переменные вам нужны (вероятно, PATH или что-то, что имеет имя, связанное с Адамсом). Чтобы сделать это в Windows, запустите set из командной строки Windows (cmd.exe) и изнутри MATLAB. Независимо от того, какая разница в выходе, это возможный подозреваемый в вашей проблеме. Чтобы проверить только одну переменную, вы можете использовать команду echo %variablename%.

Я предполагаю, что вы обнаружили, что переменная окружения suspect отсутствует и должна быть установлена ​​в value.

Исправление проблемы заключается в том, чтобы запустить вашу команду в MATLAB как system('set suspect=value & ...'), где вы заменяете ... своей исходной командой.

+0

Большое спасибо! Проблема решена! Я проверил системную переменную для Adams из своих настроек компьютера. И я обнаружил, что DOS дал истинную ценность, но MATLAB дал другое значение. Я изменил его через MATLAB, и теперь он работает! Я очень ценю вашу помощь:) – open0121

Смежные вопросы