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

Этот пример от страницы ссылки на функцию 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 не использует случайные числа, поэтому дает тем же результатам каждый раз, запущенный ли параллельно или последовательный.

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