在Matlab中是否有等价于R的负索引?

mer*_*011 6 matlab r

R,如果我们有一个向量和一个索引列表,我们可以使用负索引表达我们想要"除了这些索引之外的所有元素"的想法.特别要考虑以下R代码:

data = rnorm(100)
indices = sample(1:length(data), length(data)/2)
training_data = data[indices]
test_data = data[-indices]
Run Code Online (Sandbox Code Playgroud)

在此代码之后,sampled_data包含data其索引未包含在其中的所有元素indices.在matlab中是否有相同的功能?

我尝试直接使用相同的语法(当然,()而不是[],但它只是给出了错误

Subscript indices must either be real positive integers or logicals.
Run Code Online (Sandbox Code Playgroud)

jez*_*jez 8

Matlab不允许负指数.你可以做些什么来删除元素是这样的:

data2 = data;
data2(indices) = [];  % remove selected elements
Run Code Online (Sandbox Code Playgroud)

但是在做机器学习时我更喜欢使用逻辑索引:

istest = randn(length(data), 1) < 0;   % random logicals: 50% 0's and 50% 1's
istrain = ~istest;
% Now operate on data(istest) and data(istrain).
Run Code Online (Sandbox Code Playgroud)