Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将matlab输出保存到文本文件_Matlab_Permutation - Fatal编程技术网

将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

我正在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 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

然而,如果您只需要一种粗略、快速的方法来保存您的值,您可以使用matlabs
diary
命令

它将所有输入和输出保存到文本文件中

diary('cross-validation-output.txt') 
要停止写入文件,需要调用

diary OFF

我理解save函数,但是为了做到这一点,我需要将整个for循环保存在变量中(精度)。有没有一种方法可以在不中断循环的情况下做到这一点?(对不起,我对Matlab相当陌生)你说的中断循环是什么意思?如果要保存所有中间结果(例如所有精度),则需要以某种方式存储它们。恐怕没有办法了。谢谢你的帮助。我无法向循环中添加变量赋值,从而在不出错的情况下产生精度。