我有一个有 36 个值的向量,我想将其随机分成两个向量。 (第一个向量有 25 个值,第二个向量有 11 个值)。
我已经编写了这段代码(使用 MATLAB),但是当我在原始向量中具有重复值时,我将不会因为此命令而在第二个向量中获得 11 个样本
Second_vec = setdiff(orignal_Vec,First_vec);
clear;
load('U1_Acc_TimeD_FDay.mat' );
orignal_Vec=(Acc_TD_Feat_Vec (:,1));
Total_Samples = size(orignal_Vec,1);
Selected_Samples = 25;
assert(Selected_Samples<=Total_Samples);
rand_rows = randperm(Total_Samples, Selected_Samples);
First_vec = orignal_Vec(rand_rows,:); % Select the random rows from the original Vector
Second_vec = setdiff(orignal_Vec,First_vec);
最佳答案
不要使用 randperm 生成 25 个随机整数,而是使用语法 randperm(36)
生成 36 个随机整数。然后,您可以使用此随机整数向量中的前 25 个元素来索引原始向量以获得第一个向量,然后将其余元素用于第二个向量。下面是您修改后的代码。
clear;
load('U1_Acc_TimeD_FDay.mat' );
orignal_Vec=(Acc_TD_Feat_Vec (:,1));
Total_Samples = size(orignal_Vec,1);
Selected_Samples = 25;
assert(Selected_Samples<=Total_Samples);
rand_rows = randperm(Total_Samples);
First_vec = orignal_Vec(rand_rows(1:Selected_Samples)); % Select the random rows from the original Vector
Second_vec = orignal_Vec(rand_rows(Selected_Samples+1:end));
关于matlab - 在 MATLAB 中将向量随机拆分为两个向量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41288481/