在MATLAB中随机将矢量分成两个矢量

时间:2016-12-22 17:12:56

标签: matlab

我有一个有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);

1 个答案:

答案 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));