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

MATLAB循环中如何为结构体字段名添加循环变量i

问题:MATLAB循环中动态引用含循环变量的结构体字段名

现有MATLAB循环代码如下,需要将循环变量i添加到结构体字段名中(例如第一次循环时,predictions(1).pred_i要变为predictions(1).pred_1):

for i = 1:length(pred_files)
    for j = 1:length(n_unknown)
        if predictions(1).pred_i.y_pred(j) == predictions(1).y_all(j)
            accuracy_totals(1).accuracy_total_i = accuracy_totals(1).accuracy_total_i +1
        end
    end
end

解决方案

在MATLAB中,要动态访问结构体的字段名,需通过字符串拼接生成字段名,再使用括号索引的方式访问,具体修改如下:

for i = 1:length(pred_files)
    % 动态生成pred字段名
    pred_field = ['pred_', num2str(i)];
    % 动态生成accuracy_total字段名
    acc_field = ['accuracy_total_', num2str(i)];
    
    % 初始化accuracy_total字段(避免未定义报错)
    if ~isfield(accuracy_totals(1), acc_field)
        accuracy_totals(1).(acc_field) = 0;
    end
    
    for j = 1:length(n_unknown)
        % 动态访问pred字段下的y_pred
        if predictions(1).(pred_field).y_pred(j) == predictions(1).y_all(j)
            accuracy_totals(1).(acc_field) = accuracy_totals(1).(acc_field) + 1;
        end
    end
end

关键说明

  • 用['pred_', num2str(i)]拼接出带循环变量的字段名字符串
  • 通过结构体.(字段名字符串)的语法,实现动态访问结构体字段
  • 增加字段初始化判断,避免因字段未定义导致运行报错

内容的提问来源于stack exchange,提问作者Tony Sirico

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 12:55:37