Random GNU倍频程:如何确保随机矩阵中的向量是唯一的?

Random GNU倍频程:如何确保随机矩阵中的向量是唯一的?,random,matrix,unique,octave,gnu,Random,Matrix,Unique,Octave,Gnu,创建GNU倍频程中随机整数值的MxN矩阵非常简单: K = randi(k, M, N) 其中k是最大值 但是,我要求这个矩阵中的每个列向量都是唯一的。有没有一个聪明的方法来保证八度音程?当然,我可以循环所有列,并计算所有可能的列向量对之间的成对差。但这似乎有点麻烦 有人有更好的主意吗 一个选项是消除重复列,并将结果的维度与原始矩阵的维度进行比较。请注意,我们需要将矩阵转置,以便能够使用行参数使其唯一 # Non unique columns octave> K=[1 2 1; 2 2

创建GNU倍频程中随机整数值的MxN矩阵非常简单:

K = randi(k, M, N)
其中k是最大值

但是,我要求这个矩阵中的每个列向量都是唯一的。有没有一个聪明的方法来保证八度音程?当然,我可以循环所有列,并计算所有可能的列向量对之间的成对差。但这似乎有点麻烦


有人有更好的主意吗

一个选项是消除重复列,并将结果的维度与原始矩阵的维度进行比较。请注意,我们需要将矩阵转置,以便能够使用
参数使其唯一

# 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

非常感谢,约阿希姆。这很有效。我查看了unique()函数,但似乎忽略了“rows”参数。