exponenta event banner

evalRequirement

Класс: sdo.requirements.SmoothnessConstraint
Пакет: sdo.requirements

Оценка соответствия требованиям ограничения плавности

Синтаксис

evaluation = evalRequirement(requirement,variableData)
evaluation = evalRequirement(requirement,variableData,indepVar1,...,indepVarN)

Описание

evaluation = evalRequirement(requirement,variableData) оценивает, являются ли тестовые данные; variableData, удовлетворяет требованию ограничения сглаживания, которое указано в requirement объект. Программа вычисляет величину градиента тестовых данных и сравнивает ее с границей, указанной в GradientBound свойства объекта. Для расчета градиента программа предполагает, что интервал между точками данных в каждом измерении равен 1. Положительное evaluation значение указывает, что требование было нарушено.

Дополнительные сведения о том, как рассчитывается величина градиента, см. в разделе Алгоритмы.

evaluation = evalRequirement(requirement,variableData,indepVar1,...,indepVarN) использование indepVar1,...,indepVarN для указания интервала между точками тестовых данных в каждой из N размеры данных.

Входные аргументы

развернуть все

Требование ограничения сглаживания, указанное как sdo.requirements.SmoothnessConstraint объект. В объекте задается верхняя граница величины градиента.

Переменные данные для вычисления, указанные как вещественный числовой вектор, матрица или массив.

Интервал между точками тестовых данных в каждой из N размеры данных, заданные как скаляр или вектор. Независимая переменная indepVar1 определяет интервал, проходящий вниз по строкам тестовых данных, и indepVar2 задает интервал вдоль столбцов. Аналогично, indepVarN указывает интервал вдоль N-го размера тестовых данных. Можно указать каждый из indepVar1,...,indepVarN как скаляры или векторы:

  • Скаляры (Scalars) - указывает интервал между тестовыми данными в соответствующем измерении как ненулевой скаляр. Например, предположим, что variableData является двумерным, а интервал между данными в первом измерении равен 5 и во втором измерении 2. Определить indepVar1 как 5 и indepVar2 как 2.

  • Векторы (Vectors) - координаты тестовых данных в соответствующем измерении определяются как вещественные, числовые, монотонные векторы. Программа использует координаты для вычисления интервала между точками тестовых данных в соответствующем измерении. Длина вектора должна соответствовать длине тестовых данных в соответствующем измерении. Нет необходимости задавать координаты с равномерным интервалом.

    Например, предположим, что variableData является двумерным, и длина тестовых данных в первом и втором измерениях равна 3 и 5соответственно. Координаты тестовых данных в первом измерении: [1 2 3]. Во втором измерении интервал не является однородным, и координаты тестовых данных равны [1 2 10 20 30]. Определить indepVar1 как [1 2 3] и indepVar2 как [1 2 10 20 30].

Пример, показывающий эффект задания indepVar1,...,indepVarN, см. раздел Задание интервала между точками данных тестов.

Можно также задать интервал между точками тестовых данных с помощью массива ячеек. Количество элементов в массиве ячеек должно соответствовать количеству измерений в тестовых данных, variableData. Например, предположим, что variableData является двумерным, а интервал между данными в первом измерении равен 2. Во втором измерении координаты тестовых данных равны [1 3 6 7 10]. Для задания интервала между данными теста можно использовать один из следующих синтаксисов:

evaluation = evalRequirement(requirement,variableData,2,[1 3 6 7 10]);
evaluation = evalRequirement(requirement,variableData,{2,[1 3 6 7 10]});

Выходные аргументы

развернуть все

Оценка требования ограничения сглаживания, возвращаемого как скаляр. Отрицательное значение указывает, что граница выполнена, а положительное значение указывает на нарушение требования.

Примеры

развернуть все

Создайте объект требования для ограничения величины градиента одномерной переменной значением 5,5.

Requirement = sdo.requirements.SmoothnessConstraint('GradientBound',5);

Укажите тестовые данные для одномерной переменной. Данные линейные с уклоном, равным 10.

variableData = 10*(1:5);

Проанализируйте требование.

Evaluation = evalRequirement(Requirement,variableData)
Evaluation = 1

Поскольку интервал между точками тестовых данных не указан, программа вычисляет величину градиента при условии, что этот интервал равен 1. Evaluation является положительным, указывая, что величина градиента тестовых данных больше границы, и требование нарушается.

Создайте объект требования ограничения сглаживания и задайте градуировку градиента как 3.

Requirement = sdo.requirements.SmoothnessConstraint;
Requirement.GradientBound = 3;

Укажите тестовые данные со значением величины градиента 2 для одномерной переменной. Интервал между контрольными точками равен 2.

variableData = 2:2:10;

Оцените требование без указания интервала между контрольными точками. Программа предполагает интервал 1.

Evaluation = evalRequirement(Requirement,variableData)
Evaluation = -0.3333

Отрицательное значение указывает на выполнение требования.

Вычислите требование, используя 2 в качестве интервала между точками данных теста.

Evaluation = evalRequirement(Requirement,variableData,2)
Evaluation = -0.6667

Увеличенный интервал уменьшает значение градиента, и требование по-прежнему выполняется.

Теперь оцените требование, используя 0,5 в качестве интервала.

Evaluation = evalRequirement(Requirement,variableData,0.5)
Evaluation = 0.3333

Уменьшенный интервал увеличивает значение величины градиента, чтобы быть выше границы градиента, и требование нарушается.

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

Requirement = sdo.requirements.SmoothnessConstraint;
Requirement.GradientBound = 5.5;

Укажите двухмерные тестовые данные для переменной. В этом примере создайте тестовые данные с величиной градиента 5и использовать 2 как интервал между точками тестовых данных в каждом измерении.

[X1,X2] = ndgrid(1:2:20,1:2:10);
variableData = 3*X1+4*X2;

Градиент тестовых данных в двух измерениях равен 3 и 4. Поэтому величина градиента тестовых данных равна 5 (= 32 + 42).

Укажите координаты тестовых данных в каждом измерении.

indepVar1 = [1:2:20];
indepVar2 = [1:2:10];

Указанные координаты указывают на то, что расстояние между контрольными точками данных в обоих измерениях равно 2.

Оцените, удовлетворяют ли тестовые данные требованиям.

Evaluation = evalRequirement(Requirement,variableData,indepVar1,indepVar2)
Evaluation = -0.0909

Evaluation - отрицательное число, указывающее, что требование удовлетворено, а величина градиента тестовых данных ниже заданной границы.

Алгоритмы

Чтобы понять, как вычисляется величина градиента, рассмотрим данные теста F от двумерной переменной, которая является функцией независимых переменных x1 и x2. Градиент определяется как:

∇F=∂F∂x1i^+∂F∂x2j^

Величина градиента равна:

|∇F|= (∂F∂x1) 2 + (∂F∂x2) 2

Аналогично, градиент для N-мерной переменной равен:

|∇F|= (∂F∂x1) 2 + (∂F∂x2) 2+⋯+ (∂F∂xN) 2

Для вычисления величины градиента программа вычисляет частную производную в каждом измерении путем вычисления разности между последовательными тестовыми данными в этом измерении и деления на интервал между тестовыми данными в этом измерении. При указании интервала между тестовыми данными в каждом измерении в indepVar1,...,indepVarN, программа использует указанный интервал. Если интервал не указан, программа предполагает, что тестовые данные разнесены на 1 шаг в каждом измерении. Программа нормализует конечную величину градиента на GradientBound имущество requirementи возвращает нормализованное значение в evaluation.

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