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