我在文本文件中有一个名称列表,我想读取每个名称,然后检查是否存在具有该名称的目录。但是,我在理解单元数组时遇到了一些麻烦,而且我当前的实现没有按预期运行。
以下是我的代码:
% Read in the directory names from the text file
file_id = fopen('myfile.txt');
line = fgetl(file_id);
lines = [];
while ischar(line)
lines = [lines; line];
line = fgetl(file_id);
end
% Create a cell array from the character array
lines = cellstr(lines);
num_dirs = size(lines, 1);
% Loop through all directory names
for i=1:num_dirs
% Check if the directory exists
dir_name = lines(i, 1);
if exist(my_dir, 'dir')
% Do something
end
end
这在if exist(my_dir, 'dir')
行崩溃。似乎dir_name
是一个1x1的单元格,而不是我想要的字符串,我认为这可能导致这种情况。
那么如何从文本文件中读取这些名称,然后加载每个名称,以便加载字符串而不是单元格?我觉得细胞很混乱!
答案 0 :(得分:1)
您可以通过使用花括号索引来访问单元格数组中单元格的内容。我创建了一个包含行<{p}>的myfile.txt
file1
file2
file3
为了测试您的代码。
...
>> lines = cellstr(lines);
>> lines{1}
ans =
file1
>> whos ans
Name Size Bytes Class Attributes
ans 1x5 10 char
注意用括号索引时的区别:
>> lines(1)
ans =
'file1'
>> whos ans
Name Size Bytes Class Attributes
ans 1x1 122 cell
因此,
>> exist(lines{1}, 'dir')
ans =
0
应该这样做。