Matlab 八度采样随机列

Matlab 八度采样随机列,matlab,matrix,octave,Matlab,Matrix,Octave,我有一个矩阵,我想从中随机选择t个随机列作为新矩阵的倍频程,但我想我的随机选择以矩阵的奇异值分解为基础,按比例加权。所以本质上我想选择t个随机列,其概率是在选择之前确定的。在Octave/Matlab中有没有实现这一点的方法 谢谢 假设您有一些权重行向量,W,(或者在您的情况下可能是矩阵特征值的某个函数),您应该首先创建一个表示权重归一化累积和的向量,如下所示: cumNormW = cumsum(W)./sum(W); cumNormW的值现在应该是单调递增的,范围应该是W(1)到1 接下来

我有一个矩阵,我想从中随机选择t个随机列作为新矩阵的倍频程,但我想我的随机选择以矩阵的奇异值分解为基础,按比例加权。所以本质上我想选择t个随机列,其概率是在选择之前确定的。在Octave/Matlab中有没有实现这一点的方法


谢谢

假设您有一些权重行向量,
W
,(或者在您的情况下可能是矩阵特征值的某个函数),您应该首先创建一个表示权重归一化累积和的向量,如下所示:

cumNormW = cumsum(W)./sum(W);
cumNormW
的值现在应该是单调递增的,范围应该是
W(1)
1

接下来,您需要从
[0,1]

randVal = rand(1);
您将使用此随机值查找刚刚随机选择的相应列。最后,您希望找到累积归一化权重向量的第一个索引

randCol = find(cumNormW <= randVal, 1, 'last')
规格化后,您得到
cumNormW=[0.40 0.70 0.90 1]

正如您所看到的,您绘制导致选择第一列的数字的概率要高得多(`randVal-see)
W = [4 3 2 1];