Реализуйте складной нож Используя параллельные вычисления

Этот пример от jackknife страница ссылки на функцию, но запуски параллельно.

Сгенерируйте выборочные данные размера 10000 от нормального распределения со средним значением 0 и стандартным отклонением 5.

sigma = 5;
rng('default')
y = normrnd(0,sigma,10000,1);

Запустите jackknife параллельно оценить отклонение. Для этого используйте statset создать структуру опций и установить UseParallel поле к истине.

opts = statset('UseParallel',true);
m = jackknife(@var,y,1,'Options',opts);

Сравните известную формулу смещения с оценкой смещения складного ножа.

n = length(y);
bias = -sigma^2/n % Known bias formula
jbias = (n-1)*(mean(m)-var(y,1)) % jackknife bias estimate
Starting parallel pool (parpool) using the 'local' profile ...

Connected to the parallel pool (number of workers: 6).

bias =

   -0.0025


jbias =

   -0.0025

Сравните, сколько времени это берет, чтобы вычислить в сериале и параллельно.

tic;m = jackknife(@var,y,1);toc  % Serial computation
Elapsed time is 1.638026 seconds.
tic;m = jackknife(@var,y,1,'Options',opts);toc % Parallel computation
Elapsed time is 0.507961 seconds.

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

Для просмотра документации необходимо авторизоваться на сайте