Matlab:在单元数组中分配和读取字符串

时间:2014-06-03 19:01:41

标签: matlab

我在文本文件中有一个名称列表,我想读取每个名称,然后检查是否存在具有该名称的目录。但是,我在理解单元数组时遇到了一些麻烦,而且我当前的实现没有按预期运行。

以下是我的代码:

% 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的单元格,而不是我想要的字符串,我认为这可能导致这种情况。

那么如何从文本文件中读取这些名称,然后加载每个名称,以便加载字符串而不是单元格?我觉得细胞很混乱!

1 个答案:

答案 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

应该这样做。