matlab 一个训练函数中的若干记录用一个叫 records 的结构体返回,其中包括多个 loss 的 list / vector,现用一个循环遍历这些 loss lists、画图、保存。
Code
getfield用字符串取 struct 的 fieldsaveas保存 figure
% 假装 res 是某个函数返回的结果
res = struct();
res.loss_1 = [1 2 3];
res.loss_2 = [4 5 6];
% 用字符串按名取 field
for k = ["loss_1", "loss_2"]
v = getfield(res, k);
fprintf("--- %s\n", k);
% disp(v);
% 画图
if length(v) < 2
continue;
end
f = figure;
x = 1 : length(v);
% 下在一幅图中同时画两条线(好像也可以 `hold on` + 多次 plot)
plot(x, v, x, -v);
legend("1st", "2nd");
% 保存
saveas(f, sprintf("log/%s.png", k));
close(f);
end
该博客介绍了如何在Matlab中处理一个返回结构体的训练函数,该结构体包含多个loss列表。通过遍历结构体的字段,提取loss列表,并根据字段名称动态创建图表,然后保存为PNG图像。代码示例展示了如何利用getfield获取结构体字段,plot函数绘制图形,以及saveas函数保存图像。
586

被折叠的 条评论
为什么被折叠?



