是否有单行从每个项目的多个实例的矩阵中找到最小的唯一实体?

Kri*_*673 5 matlab matrix

比如说,我有一个A包含2列的矩阵- 第1列包含项目ID,第2列包含其权重:

A = [
3   5
2   3
2   5
1   4
3   4
2   6
1   9
3   2 ];
Run Code Online (Sandbox Code Playgroud)

我希望输出如下:

items = [
1   4
2   3
3   2];
Run Code Online (Sandbox Code Playgroud)

我要写的代码是:

items(:,1)=unique(A(:,1));
for i=1:size(items,1)
    temp=A(A(:,1)==items(i,1),:);
    items(i,2)=min(temp(:,2));
end
Run Code Online (Sandbox Code Playgroud)

items矩阵是这里所需的输出.

我想知道是否有一个单行代码在MATLAB中执行此操作.

Sha*_*hai 8

假设您的商品ID是从1开始的整数,您可以使用accumarray:

accumarray(a(:,1), a(:,2), [], @min);
Run Code Online (Sandbox Code Playgroud)