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 как скаляры или векторы:

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

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

    Например, предположим, что 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

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

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

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

Задайте 2-мерные тестовые данные для переменной. В этом примере сгенерируйте тестовые данные с градиентной величиной 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=Fx1i^+Fx2j^

Градиентная величина является:

|F|=(Fx1)2+(Fx2)2

Точно так же градиент для N-мерной переменной:

|F|=(Fx1)2+(Fx2)2++(FxN)2

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

Введенный в R2016b