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

如何在MATLAB中用变量结合load函数批量导入.mat文件?

批量导入.mat文件的解决方案

一、正确的批量导入实现(推荐方式)

你之前的代码问题出在两个地方:一是字符串格式化用了&s(应该是%s),二是load的参数传递方式不对。下面是用for循环批量处理的靠谱方案,建议用结构体或数组存储结果,比单独定义一堆零散变量好管理:

% 定义filterSize的取值范围
filterSizes = 3:2:41;

% 初始化结构体来存储导入的数据和提取的accuracy
F1_scores = struct();
accuracies = struct();

% 也可以用数组存accuracy,方便后续统计分析
accuracy_array = zeros(1, length(filterSizes));

for i = 1:length(filterSizes)
    current_size = filterSizes(i);
    % 生成对应文件名
    file_name = sprintf('results_%dx%d.mat', current_size, current_size);
    % 加载文件数据
    loaded_data = load(file_name);
    
    % 存入结构体,用尺寸作为字段名
    F1_scores.(['size_', num2str(current_size)]) = loaded_data;
    accuracies.(['size_', num2str(current_size)]) = loaded_data.accuracy;
    
    % 存入数组(可选)
    accuracy_array(i) = loaded_data.accuracy;
end

之后你可以通过accuracies.size_3获取3x3的准确率,或者用accuracy_array(1)直接访问,遍历、分析起来都很方便。

二、关于动态生成F1_score_%d这类变量名

虽然能实现,但非常不推荐——动态变量会让代码可读性变差,容易出现命名冲突,调试和维护都很麻烦。如果一定要这么做,可以用eval函数:

filterSizes = 3:2:41;
for i = 1:length(filterSizes)
    current_size = filterSizes(i);
    file_name = sprintf('results_%dx%d.mat', current_size, current_size);
    % 动态生成变量并加载数据
    eval(sprintf('F1_score_%d = load(''%s'');', current_size, file_name));
    eval(sprintf('accuracy_%d = F1_score_%d.accuracy;', current_size, current_size));
end

但还是强烈建议用第一种结构体/数组的方式,代码更规范,后续扩展也更容易。

内容的提问来源于stack exchange,提问作者Yasemin G.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 17:36:11