在GNU Octave中创建随机整数值的MxN矩阵非常简单:
K = randi(k, M, N)
其中k是最大值。
但是,我要求此矩阵中的每个列向量都应该是唯一的。有没有一种聪明的方法可以确保在Octave中实现这一目标?当然,我可以遍历所有列并计算所有可能的列向量配对之间的成对差异。但这似乎有点麻烦。
有没有人有更好的主意?
答案 0 :(得分:2)
一种选择是使用unique
来消除重复的列,并将结果的维度与原始矩阵的维度进行比较。请注意,我们需要转置矩阵才能将rows
参数用于唯一。
# Non unique columns
octave> K=[1 2 1; 2 2 2]
K =
1 2 1
2 2 2
octave> isequal(size(unique(K','rows')), size(K'))
ans = 0
# Unique columns
octave> K=[1 2 3; 2 2 2]
K =
1 2 3
2 2 2
octave> isequal(size(unique(K','rows')), size(K'))
ans = 1