比如说,我有一个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中执行此操作.
假设您的商品ID是从1开始的整数,您可以使用accumarray:
accumarray(a(:,1), a(:,2), [], @min);
Run Code Online (Sandbox Code Playgroud)