我有一个有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);
答案 0 :(得分:3)
使用语法randperm(36)
生成36个随机整数,而不是使用randperm生成25个随机整数。然后,您可以使用此随机整数向量中的前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));