如何在matlab中构造无序对结构?
让我们用E表示这样的结构,其中E= {(i,j),(k,p),…}和(i,j)=(j,i)。那么如何在matlab中构造E呢?有什么建议吗?
提前谢谢你
发布于 2015-07-16 19:47:34
Bas Swinckels建议的是一种有效存储集合的方法。由于您的每个双精度包含两个元素,我将使用一个具有三个约束的矩阵:
对于任何输入,您都可以使用以下代码确保三个属性:
>> M=[1,2;2,1;3,2;1,3;3,1]
M =
1 2
2 1
3 2
1 3
3 1
>> sortrows(unique(sort(M,2),'rows'))
ans =
1 2
1 3
2 3
(对于大多数matlab版本,sortrows
是多余的,因为unique
已经读取了排序)
矩阵表示的替代方法是一个单元格:
{[1,2],[1,3],[2,3]}
它的性能可能较差,但您可以将其扩展到不同大小的元组。最后一种选择,使用位掩码表示集合,在这种情况下似乎效率不高。
发布于 2015-07-19 11:40:53
任何具有相等行和列的对称矩阵都可以满足您的要求:
a = zeros(3)
或b = ones(2)
a( i, j ) = a( j, i );
我希望这能对你有所帮助。
https://stackoverflow.com/questions/31462681
复制相似问题