exponenta event banner

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'. PointOrder свойство указывает порядок, в котором создаются точки последовательности Соболя. Когда PointOrder имеет значение 'standard'полученные точки соответствуют первоначальной реализации последовательности Соболя. Когда PointOrder имеет значение 'graycode', последовательность генерируется реализацией, которая использует код Грея индекса вместо самого индекса.

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

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

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

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

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

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

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

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

Совет

  • Skip и Leap полезны для параллельных приложений. Например, при наличии лицензии Parallel Computing Toolbox™ можно разделить последовательность точек на N различных работников с помощью функции labindex(Панель инструментов параллельных вычислений). На каждом 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] Bratley, P. и Б. Л. Фокс. «Алгоритм 659 Реализация генератора квазирандомных последовательностей Соболя». Транзакции ACM на математическом программном обеспечении. т. 14, № 1, 1988, стр. 88-100.

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

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

[4] Коцис, Л. и У. Дж. Уайтен. «Вычислительные исследования последовательностей с низким несоответствием». Транзакции ACM на математическом программном обеспечении. т. 23, № 2, 1997, стр. 266-294.

[5] Матоусек, J. «На L2-Discrepancy для якорей». Журнал сложности. т. 14, № 4, 1998, стр. 527-556.

Представлен в R2008a