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 th размерность тестовых данных. Можно задать каждый 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.

Смотрите также

Введенный в R2017b