matlab - 将唯一元素的索引存储在矩阵中

标签 matlab sparse-matrix

我有这个矩阵

1 2
1 3
1 4
2 1
2 2
3 1

从这个矩阵中我想要一个类似的数据结构

1={2 3 4}
2 = {1 2}
3 = {1}

如何在 matlab 中有效地完成此操作?

最佳答案

您可以使用accumarray为了那个原因。让你的矩阵表示为M

[bb, ~, jj] = unique(M(:,1));
occ = accumarray(jj,M(:,2),[],@(v) {v(:).'});
result = [num2cell(bb) occ];

结果是一个 2 列元胞数组。根据您的示例数据,

>> result{:,1}
ans =
     1
ans =
     2
ans =
     3
>> result{:,2}
ans =
     2     3     4
ans =
     1     2
ans =
     1

关于matlab - 将唯一元素的索引存储在矩阵中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22425327/

相关文章:

matlab - 如何填充matlab函数 "scatter"生成的图像内的空白区域

MATLAB:更改半对数条形图上的 BaseValue

python - 使用分类数据构造稀疏矩阵

python - 稠密矩形矩阵乘以稀疏矩阵

c++ - 在编译时自动生成用于稀疏数组索引的 switch 语句

matlab - 手动将RGB图像转为灰度Matlab

matlab - 没有for循环,我可以在matlab中生成列表[1 2 3 2 3 4 3 4 5 ...]吗?

python - 为什么 MATLAB/Numpy/Scipy 性能缓慢且达不到 CPU 能力(失败)?

python - 直接在Scipy稀疏矩阵上使用Intel mkl库以更少的内存计算A点A.T

python - Numpy:将稀疏矩阵转换为 ndarray