在MATLAB中将一个向量随机拆分为两个向量

在MATLAB中将一个向量随机拆分为两个向量,matlab,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_Sam

我有一个有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);
Second\u vec=setdiff(原始向量,第一向量);
清楚的
加载('U1_Acc_TimeD_FDay.mat');
原始向量=(Acc_TD_Feat_Vec(:,1));
样本总数=尺寸(原始向量,1);
所选样本=25;

assert(Selected_Samples不是使用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));
清晰;
加载('U1_Acc_TimeD_FDay.mat');
原始向量=(Acc_TD_Feat_Vec(:,1));
样本总数=尺寸(原始向量,1);
所选样本=25;

断言(所选样本用于生成索引和数据索引。亲爱的Excaza,如果您看到上面的代码!我已经使用它来创建第一个向量,但我希望原始向量中的剩余值位于第二个向量中。为什么要删除代码?您应该回滚该编辑并将代码示例保留在那里,以便人们可以n看看你做了什么,以及它如何不适用于你,以便与公认的答案进行比较。哦,对不起,我想我会让人们感到困惑,非常感谢你让我知道,我将附上它:).顺便说一下,我想知道你是否能帮我解答这个新问题,因为我已经在o中附上了完整的代码为了避免重复。亲切的问候。亲爱的纳万,非常感谢你。我想你误解了我的问题。我已经有了向量(它是原始向量).所以,我不想生成随机整数值!因为我的值已经存储在orignal_Vec中。我只想将原始向量随机拆分为两个向量。第一个向量有25个值,第二个向量有11个值!再次感谢您的支持answer@Neamah这就是他的代码所做的。试着运行它。它会加载t像您这样的数据,然后它使用
randperm
有效地洗牌
原始数组中的值。