这应该可以解决问题:
% Generate sample data...
data = rand(32000,1);
% Calculate the number of training entries...
train_off = round(numel(data) * 0.8);
% Split data into training and test vectors...
train = data(1:train_off);
test = data(train_off+1:end);
但如果你确实想依赖逻辑索引,你可以按如下步骤操作:
% Generate sample data...
data = rand(32000,1);
data_len = numel(data);
% Calculate the number of training entries...
train_count = round(data_len * 0.8);
% Create the logical indexing...
is_training = [true(train_count,1); false(data_len-train_count,1)];
% Split data into training and test vectors...
train = data(is_training);
test = data(~is_training);
您还可以前往randsample 函数 https://mathworks.com/help/stats/randsample.html为了在提取中实现一定的随机性,但这不会在每次运行脚本时为您提供测试和训练元素的确切绘制次数:
% Generate sample data...
data = rand(32000,1);
% Generate a random true/false indexing with unequally weighted probabilities...
is_training = logical(randsample([0 1],32000,true,[0.2 0.8]));
% Split data into training and test vectors...
train = data(is_training);
test = data(~is_training);
您可以通过生成正确数量的测试和训练索引,然后使用randperm https://mathworks.com/help/matlab/ref/randperm.html基于索引:
% Generate sample data...
data = rand(32000,1);
data_len = numel(data);
% Calculate the number of training entries...
train_count = round(data_len * 0.8);
% Create the logical indexing...
is_training = [true(train_count,1); false(data_len-train_count,1)];
% Shuffle the logical indexing...
is_training = is_training(randperm(32000));
% Split data into training and test vectors...
train = data(is_training);
test = data(~is_training);