我有几个* .txt文件,包含3列信息,这里只是一个文件的示例:
namecolumn1 namecolumn2 namecolumn3
#----------------------------------------
name1.jpg someinfo1 name
name2.jpg someinfo2 name
name3.jpg someinfo3 name
othername1.bmp info1 othername
othername2.bmp info2 othername
othername3.bmp info3 othername
我想摘自" namecolumn1"只有名称以 name 开头,但来自第1列的名称。
我的代码如下:
file1 = fopen('test.txt','rb');
c = textscan(file1,'%s %s %s','Headerlines',2);
tf = strcmp(c{3}, 'name');
info = c{1}{tf};
问题在于,当我做disp(info)时,我只得到了表中的第一个条目:name1.jpg我想拥有所有这些条目:
name1.jpg
name2.jpg
name3.jpg
答案 0 :(得分:0)
你几乎就在那里。您所看到的是MATLAB的Comma Separated List示例,因此MATLAB将分别返回每个值。
您可以在运行脚本后在命令行中输入c{1}{tf}
来验证这一点,该脚本将返回:
>> c{1}{tf}
ans =
name1.jpg
ans =
name2.jpg
ans =
name3.jpg
虽然有时我们想要concatenate them,但我认为在字符数组的情况下,使用它比保留单元格数更难:
>> info = [c{1}{tf}]
info =
name1.jpgname2.jpgname3.jpg
与
>> info = c{1}(tf)
info =
'name1.jpg'
'name2.jpg'
'name3.jpg'
前者需要你reshape
结果(和空格键,如果字符串长度不同),而你可以直接索引单元数组中的字符串,而不必担心任何(例如) info{1}
)。