我有两个矩阵X (122 x 125973)和Y (1 x 125973)。我想在我的数据集上进行引导,我想在其中创建B观测(比如B = 3)。据我所知,B大小的观测结果应该是随机抽取的。如何将X和Y分割成更小的观察引导样本?
发布于 2019-08-28 13:21:44
randi()使您能够绘制伪随机整数,包括重复条目。然后,这些指标可以作为你观察的指标。因此:
X = rand(122,125973);
Y = rand(1,125973);
m = 3; % Your desired number of observations; maximum 125973
idx = randi(numel(Y),m,1) % Generate an mx1 vector
BX = X(:,idx); % 122xm matrix
BY = Y(:,idx); % 1xm matrix您也可以从X和Y中删除条目,但是由于您已经说过明确允许重复条目,所以它的使用可能与此无关:
X(:,idx) = []; % [] sets to empty array, thus removes the entry如果您需要多次m观测,只需循环一遍:
N = 100; % Number of observation matrices to be generated
m = 3; % Number of observations per matrix
X = rand(122,125973);
Y = rand(1,125973);
BX = rand(size(X,1),m,N); % 3D matrix for collection
BY = rand(size(X,1),m,N);
for ii = 1:N % Loop over all matrices to be generated
idx = randi(numel(Y),m,1) % Generate an mx1 vector
BX(:,:,ii) = X(:, idx); % 122xmxN matrix
BY(:,:,ii) = Y(:, idx); % 1xmxN matrix
endBX和BY现在是包含N矩阵的3D矩阵,每个矩阵都有m观测。调用BX(:,:,n)将选择带有观察的矩阵的n。对于阅读各种索引方式,我建议阅读this post。
https://stackoverflow.com/questions/57692931
复制相似问题