Random GNU倍频程:如何确保随机矩阵中的向量是唯一的?
创建GNU倍频程中随机整数值的MxN矩阵非常简单: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
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”参数。