matlab - 如何重组 histcounts 以与二维矩阵一起使用

标签 matlab matrix

我在 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/

相关文章:

Matlab:高斯消去函数

java - Java 和 Matlab 中给出不同结果的指数函数

r - 将 ff 对象转换为 data.frame

c++ - 矩阵中的实心圆(二维数组)

matlab - 从矩阵中提取 block 对角线

matlab - Octave 矢量化循环 : for i = 1:size(v, 1) v(i,y(i)) = 1;结尾

python - NumPy 百分位函数不同于 MATLAB 的百分位函数

matlab - 如何将向量 reshape 为方阵?

python - 从数组创建矩阵

matlab - 半正定矩阵的行列式