Вы используете синтаксис команды для вызова функции diary
.
% Command syntax
diary filename.log
% Equivalent function syntax
diary( 'filename.log' );
Обратите внимание, что при использовании командного синтаксиса все аргументы обрабатываются как строки, несмотря на отсутствие кавычек!
Итак, когда вы делаете diary testconfig_(x).log
, эквивалент равен
diary( 'diary testconfig_(x).log' );
Все ваши журналы имеют одинаковое имя файла, потому что x
никогда не оценивается как переменная цикла, это всегда просто часть строки!
Вы пытаетесь создать строки с переменной цикла в имени, для этого вы не можете использовать синтаксис команды.
Вместо этого используйте следующий синтаксис функции:
filename = sprintf( 'diary testconfig_%d.log', x );
diary( filename ); % treat the filename variable as a variable, not a string
Вам не нужно объявлять промежуточную переменную filename
, и есть другие способы создания строки filename
, но я надеюсь, что это демонстрирует проблему.