Mac*_*nos 3 arrays matlab matrix
我在Matlab工作.我有一个有两列的二维矩阵.让我们将第一列中的元素视为标签.标签可以重复.
如何将每个标签的第二列中的所有元素相乘?
例:
matrix = [1,3,3,1,5; 2,3,7,8,3]'
Run Code Online (Sandbox Code Playgroud)
我需要得到:
a = [1,3,5; 16,21,3]'
Run Code Online (Sandbox Code Playgroud)
你可以帮助我无需 for-while循环吗?
我会用accumarray.预处理unique将整数索引1:n分配给第一行中的值,这样可以accumarray在不为2和4创建不必要的bin的情况下工作.它还支持负数和浮点数.
[ulable,~,uindex]=unique(matrix(:,1))
r=accumarray(uindex,matrix(:,2),[],@prod)
r=[ulable,r]
Run Code Online (Sandbox Code Playgroud)