You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 12:45:47