如何一次在单元格中提取两个元素的一个组合

时间:2016-04-01 04:15:10

标签: matlab cell-array

我想在tlab.file中一次提取一行,如下所示。

            29,Downstairs,9481262431000,3.79,8.2,5.6252036;
            29,Downstairs,9481312266000,2.96,7.08,4.1814466;
            13,Walking,1047162303000,-2.41,5.18,1.5390993;
            13,Walking,1047212260000,-0.3,1.73,-0.50395286;
            13,Walking,1047262309000,1.27,11.03,2.5606253;
            13,Walking,1047312266000,-1.42,14.75,8.158588;
            14,Jogging,60423222332000,13.82,-4.37,12.64;
            14,Jogging,60423272319000,14.33,7.08,-2.3;
            14,Jogging,60423322338000,19.42,19.46,-7.59;

这是整个文件的一部分。我需要提取前两列可以拥有的每个组合。例如,我提取包含

的所有行
29,Downstairs

然后

13,Walking

然后

14,Jogging

等等。

有没有简单的方法来表达我想要遍历的所有组合?因为txt.file很大。它包含36*6=216个不同的组合(第一列包含来自1 to 36的数字,第二列包含6个活动)。我希望将共享相同组合的行(通常一个组合具有超过500个不同的条目,而不是像示例29,仅仅是楼下2个)存储到单元结构中。

1 个答案:

答案 0 :(得分:0)

假设您将所有数据都存储在名为myFile.txt的文件中,然后:

get: function( elem ) {
    var parent = elem.parentNode;
    if ( parent && parent.parentNode ) {
        return parent.parentNode.selectedIndex;
    }
    else{
        return null;
    }
}

结果:

fid = fopen('myFile.txt');
A = textscan(fid,'%s');
fclose(fid);
lines = A{1};
allInstances = cell(length(lines),1);
for i = 1:length(lines)
   temp = textscan(lines{i}, '%s', 'delimiter', ',');
   allInstances{i} = [temp{1}{1}, ',',temp{1}{2}];
end

uniqueCombos = unique(allInstances)