Matlab 基于向量的索引删除向量中的某些元素

Matlab 基于向量的索引删除向量中的某些元素,matlab,Matlab,我有一个向量,它有大约250000个元素数据,我正在尝试删除一些索引。我通过应用data=data(3001:203000)删除了开始索引和结束索引。 但是现在我需要将向量除以40乘以5000,然后删除所有的奇数5000,这样第一个5000将从数组中删除,第三个。。第五名等等。我只需要向量中的偶数5000。有什么想法吗?可以制作一个程序,获取你的向量,然后创建所需的向量,如: A = [1,2,3,4,5,6 ] %your vector for i = 1:2:length(A) % incr

我有一个向量,它有大约250000个元素
数据
,我正在尝试删除一些索引。我通过应用
data=data(3001:203000)
删除了开始索引和结束索引。
但是现在我需要将向量除以40乘以5000,然后删除所有的奇数5000,这样第一个5000将从数组中删除,第三个。。第五名等等。我只需要向量中的偶数5000。有什么想法吗?

可以制作一个程序,获取你的向量,然后创建所需的向量,如:

A = [1,2,3,4,5,6 ] %your vector
for i = 1:2:length(A) % increases by 2, so it skips every other index
    B = A(i);
end

disp(B)

B = [1,3,5]

你说的奇数5000和偶数5000是什么意思有点不清楚。我相信你要找的是
重塑
功能

假设我们的
数据
只是
1:250000
索引的集合,您可以使用以下内容:

data = 1:250000;
data = (3001:203000);
data = reshape(data,5000,40)'; %reshape data to be 5000 x 40, then transpose for the desired order
数据
现在是
40 x 5000
,看起来像

3001, 3002, 3003, ... , 7999, 8000
8001, 8002, 8003, ... , 12999, 13000
.
.
.
198001, 198002, ..., 202999, 203000
之后,您可以通过如下方式对偶数行进行索引,仅选择偶数行:

data = data(2:2:40,:);
最后,根据需要将其重新整形为一行

data = reshape(data',100000,1);

谢谢你的回答,但我需要删除前5000个(从3001到8000),然后使用第二个5000个(从8001到13000),删除第三个,保留第四个,依此类推。。我需要这些值在一个向量中,而不是在一个矩阵中,你可以重新塑造成你需要的向量。调用
data=data(2:2:40)
应该删除3001到8000行以及下面的奇数行,除非我不完全理解您要查找的内容。也许有一种更好的方法可以做到这一点,而不必使用“重塑”两次,但目前还不清楚。