这是我的数据:
3 3 2
2 4 1
4 1 2
7 5 2
3 4 1
2 6 2
1 5 1
我想以某种方式返回我有 3 个重复的 1 和 4 个重复的 2。
我试过find(ismember(e(:,3),set)
在哪里set = [1, 2]
,length(strfind(e(:,3),'1'))
但他们没有工作......找不到其他任何东西
如果它像那样返回我会更好
ans =
3 1
4 2
这是我的数据:
3 3 2
2 4 1
4 1 2
7 5 2
3 4 1
2 6 2
1 5 1
我想以某种方式返回我有 3 个重复的 1 和 4 个重复的 2。
我试过find(ismember(e(:,3),set)
在哪里set = [1, 2]
,length(strfind(e(:,3),'1'))
但他们没有工作......找不到其他任何东西
如果它像那样返回我会更好
ans =
3 1
4 2
在这种情况下最好使用tabulate
.
m = tabulate(a(:,3))
m =
1.0000 3.0000 42.8571
2.0000 4.0000 57.1429
[m(:,1), m(:,2)]
ans =
1 3
2 4
使用unique
andhistc
计算元素的出现次数:
[U, ia, iu] = unique(A(:, 3)); %// Vector of unique values and their indices
counts = histc(iu, 1:numel(U)); %// Count values
res = [counts(:), U];
让我们将此应用于您的示例:
A = [3 3 2; 2 4 1; 4 1 2; 7 5 2; 3 4 2; 2 6 1; 1 5 1];
[U, ia, iu] = unique(A(:, 3));
counts = histc(iu, 1:numel(U));
res = [counts(:), U];
我们得到的是:
res =
3 1
4 2
data = [3 3 2
2 4 1
4 1 2
7 5 2
3 4 1
2 6 2
1 5 1];
d = data(:,3); %extract relevant data
u = unique(d)'; %find unique list of numbers
D = repmat(d, 1, length(u));
s = sum(bsxfun(@eq, u, D)); %count occurences of each number in the unique list
ans = [s', u']
编辑:
在这里找到更好的答案:确定向量中每个唯一元素的出现次数