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_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/

相关文章:

oop - MATLAB代码的打包

matlab - 在 MATLAB 中实现 SVM 模型交叉验证的不同方法

matlab - 如何在 MRI 图像中将头骨与大脑分割开

matlab - 在 MATLAB 中绘制 3-D 矩阵*值*

c - MING文件运行错误

windows - 如何在 Windows 中设置 MCR_CACHE_ROOT

matlab - 从满矩阵转换为稀疏矩阵

matlab - 使用 PCA 投影到 Octave 中的低维空间

matlab - 如何将向量/数组传递给符号函数?

matlab - Canny 边缘检测器上可能的 NaN 梯度方向 - matlab 上的图像处理