names = ['Tom', 'Dick', 'Harry']
делает names
строкой, а не массивом строк.Чтобы использовать строковый массив, убедитесь, что у вас есть MATLAB 2016b +, где вы можете использовать двойные кавычки:
names = ["Tom", "Dick", "Harry"]
В противном случае используйте массив ячеек:
names = {'Tom', 'Dick', 'Harry'}
И получите доступ к элементам с помощью фигурных скобоки индекс:
names{1} % Tom
names{2} % Dick
В вашем коде также есть ряд других ошибок:
SourceDir = '/path/to/my/files'
mkdir([SourceDir, '/things_belonging_to_', char(names(name)), '/new_things'])
OutputDir = [SourceDir, '/things_belonging_to_', char(names(name)), '/new_things']
cd(['/things_belonging_to_', char(names(name)), '/oldthings'])
В MATLAB вы можете использовать квадратную скобку []
для объединения строк в одну.
Все в одном:
names = {'Tom', 'Dick', 'Harry'};
SourceDir = '/path/to/my/files';
for name = 1:length(names)
mkdir([SourceDir, '/things_belonging_to_', names{name}, '/new_things'])
OutputDir = [SourceDir, '/things_belonging_to_', names{name}, '/new_things']
cd(['/things_belonging_to_', names{name}, '/oldthings'])
% do other stuff that will be dumped in OutputDir
end
Дополнительные показания:
Массив строк
Символы и строки