2013-07-11 4 views
2

Я запускаю скрипт в Matlab, чтобы получить случайный тест перестановок матрицы, чтобы получить значения точности перекрестной проверки. Мой сценарий выглядит следующим образом:Сохранить вывод 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

ответ

0

Вы можете сохранить переменную (ы), содержащий результаты кросс-проверки с помощью save и загрузить их позже с помощью load. Например, если у вас есть результаты в переменную с именем accuracies:

save('cross-validation-results.txt',accuracies); 

, а затем

load('cross-validation-results.txt'); 

к reobtain переменной accuracies.

Чтобы реализовать это в своем коде, сохраните параметры настройки и соответствующую точность в массивах, а затем сохраните указанные массивы.

+0

Я понимаю, функцию сохранения, однако для того, чтобы сделать это, я должен был бы сохранить мой весь «для» цикла в переменной (точности). Есть ли способ сделать это, не нарушая цикл? (Извините, я довольно новичок в Matlab) – user2532780

+0

Что вы подразумеваете под * прерыванием цикла *? Если вы хотите сохранить * все * промежуточные результаты (например, все точные значения), вам нужно будет их каким-то образом сохранить. Я не боюсь этого. –

+0

ОК. Спасибо за помощь. Я не могу добавить назначение переменной в цикл, который создает точность, не получая ошибку. – user2532780

0

Я предлагаю вам использовать save, как описал его Марк Клаэзен.

Тем не менее, если вам просто нужен грубый, быстрый способ как-то сохранить ваши значения, вы можете использовать команду matlabs diary.

Он сохраняет все входы и выходы в текстовый файл.

diary('cross-validation-output.txt') 

Чтобы остановить запись в файл, вам нужно позвонить

diary OFF 
Смежные вопросы