В 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
Тогда, как я могу справиться с этой ситуацией? Благодарю.
Вам нужно немного изменить свой синтаксис:
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
команде.
В более общем плане вы можете использовать sprintf
для построения строк для перехода к system
, например:
for n=1:3
system(sprintf('program.exe -i %d.txt -o output%d.txt -m 1',n,n));
end
(избегайте использования я и j в качестве переменных в MATLAB)
whos
дляinput_file_name
и посмотрите, какой тип переменной. При необходимости вы можете попробоватьstrcat()
. По сути, убедитесь, что этоstring
тип, вводимый вsystem
команду.