将matlab输出保存到文本文件
我正在Matlab中运行一个脚本,以获得矩阵的随机排列测试,从而获得交叉验证精度值。我的脚本如下:将matlab输出保存到文本文件,matlab,permutation,Matlab,Permutation,我正在Matlab中运行一个脚本,以获得矩阵的随机排列测试,从而获得交叉验证精度值。我的脚本如下: %randperm labels = [zeros(40,1); ones(40,1)]; for i = 1:500 p = labels(randperm(length(labels))); end bestcv = 0; for log2c = -10:10, for log2g = -10:10, cmd = ['-s 0 -t 0 -v
%randperm
labels = [zeros(40,1); ones(40,1)];
for i = 1:500
p = labels(randperm(length(labels)));
end
bestcv = 0;
for log2c = -10:10,
for log2g = -10:10,
cmd = ['-s 0 -t 0 -v 20 -c ', num2str(2^log2c), ' -g ', num2str(2^log2g) ' -q '];
cv = svmtrain(labels, p, cmd);
if (cv > bestcv),
bestcv = cv; bestc = 2^log2c; bestg = 2^log2g;
fprintf('%g %g %g (best c = %g, g = %g, rate = %g)\n', log2c, log2g, cv, bestc, bestg, bestcv);
end
end
end
cmd = ['-s 0 -t 0 -c ', num2str(bestc), ' -g ', num2str(bestg)];
我想知道如何将输出(500个交叉验证精度值)保存到文本文件中,以及是否可以将其写入代码中
提前感谢,
Andrea C您可以使用save
保存包含交叉验证结果的变量,然后使用load
加载这些变量。例如,假设在名为accuracies
的变量中有结果:
save('cross-validation-results.txt',accuracies);
后来
load('cross-validation-results.txt');
要重新获取变量精度
要在代码中实现这一点,请将调谐参数和相关精度保存到数组中,然后保存所述数组。我建议您使用Marc Claesen描述的
save
然而,如果您只需要一种粗略、快速的方法来保存您的值,您可以使用matlabsdiary
命令
它将所有输入和输出保存到文本文件中
diary('cross-validation-output.txt')
要停止写入文件,需要调用
diary OFF
我理解save函数,但是为了做到这一点,我需要将整个for循环保存在变量中(精度)。有没有一种方法可以在不中断循环的情况下做到这一点?(对不起,我对Matlab相当陌生)你说的中断循环是什么意思?如果要保存所有中间结果(例如所有精度),则需要以某种方式存储它们。恐怕没有办法了。谢谢你的帮助。我无法向循环中添加变量赋值,从而在不出错的情况下产生精度。