arrays - 循环遍历 Matlab 中的字符串数组
问题描述
我正在尝试使用 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
我尝试使用{}
而不是[]
,我尝试使用sprintf
and fullfile
。我想要的只是一个非常无聊的 for 循环,我似乎无法找到/理解向我展示如何在mkdir
orcd
命令中使用字符串的文档。我总是以string input not supported
or结尾Arguments must contain a character vector
。
解决方案
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
进一步阅读:
推荐阅读
- php - Laravel 路由仅适用于 '/' 而不是 '/stuff'
- php - 在 Symfony4 中使用接口作为参数的 Autowire 类
- javascript - Hubot:Rocket.Chat / Meteor / JavaScript 中没有覆盖类的方法
- node.js - 如何从 mongodb 读取并在 nodejs 中输出?
- windows - 如何将cmd输出保存为文件名
- python - 使用加密在python中读写txt
- python - 如何从摘要中检索基因名称
- java - 启动我的应用程序时出现 IncompatibleClassChangeError
- javascript - 如何从字符串中分离数字和算术运算符?
- android - DAO 实现中的可完成删除函数会产生 IllegalStateException