странное поведение Matlab - PullRequest
0 голосов
/ 27 июня 2011

У меня есть детерминированная функция Matlab. Я запускаю его на наших данных и получаю ответ. Теперь, если я повторю это снова, запустив одну и ту же детерминированную функцию на том же наборе данных, я получу другой (неправильный ответ). Если я закрою matlab, снова открою функцию и снова запусту функцию, я снова получу правильный ответ. Последовательное выполнение функции дает неправильный ответ. Дело не в том, что некоторые переменные не очищаются, так как я могу набрать clearvars между последовательными запусками, и функция будет выдавать неправильный ответ, пока я не перезапущу matlab.

Кто-нибудь сталкивался с таким поведением раньше? Есть идеи, чем это может быть вызвано?

1 Ответ

0 голосов
/ 27 июня 2011

Если ваш код прямо или косвенно использует функцию, генерирующую случайные числа, вы должны убедиться, что вы используете одно и то же состояние / семя в начале каждого запуска.

Пример:

rand('twister',5489)
rand(1,5)

rand('twister',5489)
rand(1,5)

В обоих случаях вы получите одинаковый вывод:

ans =
      0.81472      0.90579      0.12699      0.91338      0.63236

Обратите внимание, что синтаксис генератора случайных чисел изменился в последних версиях MATLAB (хотя и поддерживается обратная совместимость).

Новый способ достижения вышеуказанного:

RandStream.setDefaultStream( RandStream('mt19937ar','Seed',5489) );
rand(1,5)

Или с недавно представленной функцией RNG :

rng(5489,'twister')
rand(1,5)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...