从MATLAB中的表中提取特定的列信息

时间:2016-03-22 09:31:53

标签: matlab

我有几个* .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

1 个答案:

答案 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})。