我在 matlab 中有一个 250000x2 矩阵,其中第一行有一个度数(int,0-360°),第二行有一个与该值对应的浮点值。我的目标是计算度值对(例如一行)的每次出现,并将结果写入 nx3 矩阵中。 n 此处对应于唯一行数。
因此,我的第一步是获取所有有效的唯一值(使用 unique(M, 'rows')
)。但现在我想计算所有唯一值。这是通过以下方法完成的:
uniqu_val = unique(values, 'rows');
instance = histcounts(values(:), uniqu_val);
这里我必须输入一个向量作为第二个元素,而不是一个矩阵(uniqu_val 是一个 nx2-dim-matrix)。但我想获取每个唯一行的出现次数,因此我不能仅使用矩阵 uniqu_val
的一列。简而言之:我不仅想将 histcounts 用于 1D 矩阵作为边缘值,还想将 histcounts 用于 2D 矩阵。我该如何解决这个问题?
最佳答案
您可以使用 unique
的第三个输出,然后像这样使用 histcounts
-
%// Find the unique rows and keep the order with 'stable' option
[uniq_val,~,row_labels] = unique(values, 'rows','stable')
%// Find the counts/instances
instances = histcounts(row_labels, max(row_labels))
%// OR with HISTC: instances = histc(row_labels, 1:max(row_labels))
%// Output the unique rows alongwith the counts
out = [uniq_val instances(:)]
示例运行 -
>> values
values =
2 1
3 1
2 3
3 3
1 2
3 3
1 3
3 1
3 2
1 2
>> out
out =
2 1 1
3 1 2
2 3 1
3 3 2
1 2 2
1 3 1
3 2 1
关于matlab - 如何重组 histcounts 以与二维矩阵一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28520952/