sobolset

Набор точек Соболь квазирандом

Описание

sobolset является объектом набора квазирандомных точек, который производит точки из последовательности Соболь. Последовательность Соболя является цифровой последовательностью основа-2, которая заполняет пространство очень равномерным образом.

Создание

Описание

p = sobolset(d) создает d-мерный набор точек p, который является sobolset объект с настройками свойств по умолчанию. Входной параметр d соответствует Dimensions свойство p.

пример

p = sobolset(d,Name,Value) устанавливает свойства p использование одного или нескольких аргументов пары "имя-значение". Заключайте каждое имя свойства в кавычки. Для примера, sobolset(5,'Leap',2) создает пятимерный набор точек из первой точки, четвертой точки, седьмой точки, десятой точки и так далее.

Возвращенный объект p инкапсулирует свойства квазирандомной последовательности Соболя. Набор точек конечен, длина определяется Skip и Leap свойства и по пределам на размер индексов набора точек (максимальное значение 253). Значения набора точек генерируются каждый раз, когда вы получаете доступ к p использование net или индексация круглых скобок. Значения не хранятся в p.

Свойства

расширить все

Это свойство доступно только для чтения.

Количество размерностей точек в наборе точек, заданное как положительный целочисленный скаляр в интервале [1 1111]. Для примера каждая точка в наборе точек p с p.Dimensions = 5 имеет пять значений.

Используйте d входной параметр для задания количества размерностей при создании набора точек с помощью sobolset функция.

Используйте reduceDimensions функция объекта, чтобы уменьшить количество размерностей после создания набора точек.

Интервал между точками в последовательности, заданный как положительный целочисленный скаляр. Другими словами, Leap свойство набора точек задает число точек в последовательности для скачка и опускания для каждой взятой точки. Значение по умолчанию Leap значение равно 0, что соответствует взятию каждой точки из последовательности.

Скачок - это метод, используемый для улучшения качества набора точек. Однако необходимо выбрать Leap значения с осторожностью. Многие Leap значения создают последовательности, которые не затрагивают большие субгиперпрямоугольники единичного гиперкуба и, следовательно, не могут быть равномерным набором точек квазирандома. Для получения дополнительной информации см. раздел [4].

Пример: p = sobolset(__,'Leap',50);

Пример: p.Leap = 100;

Метод генерации точек, заданный как 'standard' или 'graycode'. The PointOrder свойство задает порядок создания точек последовательности Соболь. Когда PointOrder установлено в 'standard', полученные точки совпадают с исходной реализацией последовательности Соболь. Когда PointOrder установлено в 'graycode'последовательность генерируется реализацией, которая использует код Gray индекса вместо самого индекса.

Можно использовать 'graycode' опция для более быстрой генерации последовательности, но затем программное обеспечение изменяет порядок сгенерированных точек. Для получения дополнительной информации о реализации кода Грея см. раздел [1].

Пример: p = sobolset(__,'PointOrder','graycode');

Пример: p.PointOrder = 'standard';

Настройки, которые управляют скремблированием последовательности, заданные как структура с этими полями:

  • Type - вектор символов, содержащий имя скремблирования

  • Options - Массив ячеек из значений параметров для скремблирования

Используйте scramble функция объекта для установки скремблов. Список допустимых типов скремблирования см. в type входной параметр scramble. Ошибка возникает, если для заданного набора точек задан недопустимый тип скремблирования.

The ScrambleMethod свойство также принимает пустую матрицу как значение. Затем программное обеспечение очищает все скремблирования и устанавливает свойство, содержащее 0x0 структура.

Количество начальных точек в последовательности, которые можно исключить из набора точек, заданное как положительный целочисленный скаляр.

Начальные точки последовательности иногда проявляют нежелательные свойства. Например, первая точка часто (0,0,0,...), что может привести к дисбалансу последовательности, поскольку аналог точки, (1,1,1,...), никогда не появляется. Кроме того, начальные точки часто показывают корреляции среди различных размерностей, и эти корреляции исчезают позже в последовательности.

Пример: p = sobolset(__,'Skip',2e3);

Пример: p.Skip = 1e3;

Это свойство доступно только для чтения.

Тип последовательности, на который устанавливается квазирандомная точка p основан, задан как 'Sobol'.

Функции объекта

netСгенерируйте квазирандомный набор точек
reduceDimensionsУменьшите размерности набора точек Соболь
scrambleСкремблируйте квазирандомный набор точек

Можно также использовать следующий MATLAB® функции со sobolset объект. Программа обрабатывает объект набора точек как матрицу многомерных точек.

lengthДлина наибольшего измерения массива
sizeРазмер массива

Примеры

свернуть все

Сгенерируйте трехмерный набор точек Соболь, пропустите первые 1000 значений, а затем сохраните каждую 101-ю точку.

p = sobolset(3,'Skip',1e3,'Leap',1e2)
p = 
Sobol point set in 3 dimensions (89180190640991 points)

Properties:
              Skip : 1000
              Leap : 100
    ScrambleMethod : none
        PointOrder : standard

Применить случайное линейное скремблирование в сочетании со случайным цифровым сдвигом при помощи scramble.

p = scramble(p,'MatousekAffineOwen')
p = 
Sobol point set in 3 dimensions (89180190640991 points)

Properties:
              Skip : 1000
              Leap : 100
    ScrambleMethod : MatousekAffineOwen
        PointOrder : standard

Сгенерируйте первые четыре точки при помощи net.

X0 = net(p,4)
X0 = 4×3

    0.7601    0.5919    0.9529
    0.1795    0.0856    0.0491
    0.5488    0.0785    0.8483
    0.3882    0.8771    0.8755

Сгенерируйте каждую третью точку, до одиннадцатой точки, с помощью индексации круглых скобок.

X = p(1:3:11,:)
X = 4×3

    0.7601    0.5919    0.9529
    0.3882    0.8771    0.8755
    0.6905    0.4951    0.8464
    0.1955    0.5679    0.3192

Совет

  • The Skip и Leap свойства полезны для параллельных приложений. Например, если у вас есть лицензия Parallel Computing Toolbox™, можно разбить последовательность точек между N различными работниками с помощью функции labindex (Parallel Computing Toolbox). На каждом рабочем n установите Skip свойство точки, установленной на n - 1 и Leap свойство к N - 1. Следующий код показывает, как разделить последовательность между тремя работниками.

    Nworkers = 3;
    p = sobolset(10,'Leap',Nworkers-1);
    spmd(Nworkers)
        p.Skip = labindex - 1;
    
        % Compute something using points 1,4,7...
        % or points 2,5,8... or points 3,6,9...
    end

Алгоритмы

расширить все

Ссылки

[1] Брэтли, П. и Б. Л. Фокс. «Алгоритм 659 реализации генератора квазирандомной последовательности Соболь». Транзакции ACM на математическом программном обеспечении. Том 14, № 1, 1988, с. 88-100.

[2] Хон, Х. С. и Ф. Дж. Хикернелл. Алгоритм 823: Реализация скремблированных цифровых последовательностей. Транзакции ACM на математическом программном обеспечении. Том 29, № 2, 2003, стр. 95-109.

[3] Джо, С. и Ф. Я. Куо. «Замечание об алгоритме 659: Реализация генератора квазирандомной последовательности Соболя». Транзакции ACM на математическом программном обеспечении. Том 29, № 1, 2003, стр. 49-57.

[4] Kocis, L., and W. J. Whiten. «Вычислительные исследования низкорасходных последовательностей». Транзакции ACM на математическом программном обеспечении. Том 23, № 2, 1997, стр. 266-294.

[5] Matousek, J. «On the L2-Discrepancy for Anchored Boxes». Журнал сложности. Том 14, № 4, 1998, стр. 527-556.

Введенный в R2008a