matlab - 查找受约束的唯一值 - Matlab

标签 matlab

我正在尝试根据同一矩阵第 2 列中列出的最大数量在矩阵的一列中查找唯一值。

我的代码如下:

    Testing = find(unique(RAW_DATA_2(:,1))&max(RAW_DATA_2(:,2)))

对我来说,它读作在矩阵的第 1 列中查找唯一项,这也是第 2 列的最大值。然而,Matlab 不同意我的观点。

另一种方法是甚至不使用 find 函数,而只返回一个仅包含唯一值和每个唯一值的最大数量的矩阵,这是更好的选择。我尝试使用我在堆栈溢出上找到的一些代码来执行此操作,但遇到问题,因为我无法将其从“第一个”修改为“唯一”。

 I = true(size(RAW_DATA_2,1),1);
 idx = [];
 while any(I)
     idx(end+1) = find(I,1,'first');  %#ok
     I = I & all(~bsxfun(@eq, RAW_DATA_2, RAW_DATA_2(idx(end),:)),2);
 end

 result = RAW_DATA_2(idx,:);

最佳答案

我认为您的澄清评论使问题更容易理解。您应该考虑将其添加到问题本身中。这是一些可能对您有帮助的代码

a = [0 10; 1 100; 3 175; 4 80; 1 200; 2 400; 3 150; 0 10]; % your raw data
asorted = unique(a, 'rows');  %returns unique rows, sorted by value

请注意,asorted 不包含任何重复的行,并按以下方式排序:

asorted =
 0    10
 1   100
 1   200
 2   150
 2   300
 2   400
 3   150
 3   175
 4    80

现在很清楚,包含第 1 列的每个唯一元素的最下面一行就是我们所需要的。这可以通过以下方式完成:

diffidx = [diff(asorted(:, 1)); 1];  % appending 1 because the last row 
                                     % must always be included
result = asort(diffidx~=0, :)

关于matlab - 查找受约束的唯一值 - Matlab,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28868402/

相关文章:

java - Matlab在Java中的过滤器

excel - 如何将数字作为字符串写入 Excel 文件?

将矩阵元素表示为向量的算法

python - Python 中的图像处理工具箱(MATLAB)

c++ - 如何确保 Visual Studio 在安装编译器时更新注册表

matlab - MATLAB 配置的修订控制

matlab - 如何在matlab中有子结构

Matlab:定义一个函数句柄捕获函数的第二个返回值

c++ - 为什么此代码(在 Matlab 的 MEX 文件中使用 OpenMP)给出不同的结果?

matlab - 网格上直方图的快速计算