如何在matlab中创建一个删除/跳过数据/列的循环? (用于折刀)

时间:2015-06-26 18:22:22

标签: matlab

我是matlab的新手,我试图制作一个折刀脚本,这基本上意味着在我将数据存入我们的40个块之后,我想制作一个忽略一个块的循环一次。 例如,我试过这样的事情

let's say R40=randn(5,40) is the matrix
R40_n=R40(:,2:40); reads blocks 2 to 40
R40_n=R40(:,[1:2 4:40]); leaves out block 3
R40_n=R40(:,[1:3 5:40]); leaves out block 4

等等。 如何自动创建一个忽略块的循环? (我知道有一个现成的折刀功能,但我还没有想要使用它,在我尝试制作自己的东西之前) 谢谢你的所有答案。

1 个答案:

答案 0 :(得分:0)

根据您的要求,我假设您需要一个适用于任何2D数据集的通用答案。如果确实如此,下面的代码就可以解决问题。

N = 40; % number of sample steps
ix = eye(N); % identity matrix that will allow you to omit one sample step  
R40 = randn(5,40); % your data
for ii=1:N % run over the sample steps
  d = R40(:,~ix(:,ii)); % for each extract all the rows for all the columns except the the one in question 
  % now do whatever you want with the data
end   

享受