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