Как вызвать командную программу в MATLAB

0

В MATLAB можно вызвать командные программы, написанные на C или C++. Например, я могу использовать следующую команду для вызова командной программы в Windows:

system('program.exe -i input_file1.txt -o output_file1.txt -m 1 ');

Поступая таким образом, я могу вызвать программу командной строки непосредственно из MATLAB. Теперь проблема заключается в том, что все аргументы должны быть исправлены при использовании system функции. Если один аргумент, например, является изменяемым, то сбой с system функцией. Например,

for i=1:3
  input_file_name = [num2str(i),'.txt'];
  system('program.exe -i input_file_name -o output_file1.txt -m 1 ');
end

Тогда, как я могу справиться с этой ситуацией? Благодарю.

  • 0
    В моей системе сейчас не установлен Matlab, но я попробую. Какая ошибка отображается? Запустите whos для input_file_name и посмотрите, какой тип переменной. При необходимости вы можете попробовать strcat() . По сути, убедитесь, что это string тип, вводимый в system команду.
Теги:

2 ответа

6
Лучший ответ

Вам нужно немного изменить свой синтаксис:

for i=1:3
  input_file_name = [num2str(i),'.txt'];
  system(['program.exe -i ' input_file_name ' -o output_file1.txt -m 1 ']);
end

input_file_name - это имя вашей переменной в MATLAB, поэтому вы можете написать дословно в строке, input_file_name system команде.

3

В более общем плане вы можете использовать sprintf для построения строк для перехода к system, например:

for n=1:3  
   system(sprintf('program.exe -i %d.txt -o output%d.txt -m 1',n,n));
end

(избегайте использования я и j в качестве переменных в MATLAB)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню