MATLAB:如何计算数字在状态(.sta)文件的第一列中出现的次数?

时间:2014-07-08 05:00:14

标签: matlab

我的状态文件格式如下:

' bla bla

1     1   1     9     2    11  0.0100        0.0100     0.01000   
1     2   1     2     1     3  0.503         0.503      0.1709    
1     3   1     2     1     3  0.759         0.759      0.2563    
1     4   1     3     2     5  1.00          1.00       0.2411    
2     1   1     0     1     1  2.00          1.00       1.000     
3     1   1    10     1    11  2.20          0.200      0.2000    
3     2   1    13     2    15  2.40          0.400      0.200
4     1   1    10     1    11  2.20          0.200      0.2000    
4     2   1    10     1    11  2.20          0.200      0.2000    
4     3   1    10     1    11  2.20          0.200      0.2000    
blat blah'

现在我怎么知道第一列中出现了1,2,3等多少次?

上述.sta文件的答案为[4 1 2](即4是第1列中出现1的次数)。

1 个答案:

答案 0 :(得分:0)

轻松,你可以直接看看它们。例如,如果您将.sta文件读入名为data的变量:

sum(data(:, 1) == 1)

1. data(:, 1) look at all of the first column
2. (1.) == 1  create a Boolean list of whether they equal to one
3. sum(2.)    sum up all the trues to find the total number of ones. 

这将为您提供第一列中1s的数量。

如果您有兴趣对只有1s,2s等矩阵的其余部分执行操作,您可以这样做:

data_only_ones = data(data(:, 1) == 1, 2:end);

这将为您提供第一列为1的矩阵的其余部分。即。为你的例子:

1   1     9     2    11  0.0100        0.0100     0.01000   
2   1     2     1     3  0.503         0.503      0.1709    
3   1     2     1     3  0.759         0.759      0.2563    
4   1     3     2     5  1.00          1.00       0.2411

要记住的是,matlabs数组索引是 magic ,你基本上可以做任何事情。