Matlab循环问题:如何遍历1-25并跳过第12次试验
Matlab遍历1-25跳过第12项的解决方案
你的核心问题是循环变量用了索引而非目标试验编号,这里提供几种直接的解决方式:
方法1:直接遍历筛选后的编号集合
你已经通过piece = 1:25; piece(12) = [];得到了1-25中排除12的编号集合,直接遍历这个集合的元素即可,这样j会直接取到你需要的试验编号:
% 简化生成piece的方式,更直观 piece = setdiff(1:25, 12); for sub = 1:valid_subject group_data = []; for j = piece % 直接遍历piece的元素,j即为1-25除12的数值 group_data = [group_data; subject_data{sub}.trial{j}']; end group_mat(:,:,1,sub) = group_data; end
方法2:循环中直接跳过指定编号
如果不想额外定义piece变量,直接在循环内判断并跳过j=12:
for sub = 1:valid_subject group_data = []; for j = 1:25 if j == 12 continue; % 跳过第12次试验 end group_data = [group_data; subject_data{sub}.trial{j}']; end group_mat(:,:,1,sub) = group_data; end
方法3:用逻辑索引生成目标编号
和方法1类似,用逻辑索引生成要遍历的编号列表:
j_list = 1:25; j_list(j_list == 12) = []; % 移除第12个编号 for sub = 1:valid_subject group_data = []; for j = j_list group_data = [group_data; subject_data{sub}.trial{j}']; end group_mat(:,:,1,sub) = group_data; end
原代码的问题在于for j = 1:length(piece)是遍历piece的索引(1到24),而非piece里存储的试验编号,导致你实际取的是第1到24个trial,而非跳过编号12的trial。
内容的提问来源于stack exchange,提问作者holholhol
相关产品推荐
相关产品推荐

