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Оценка положительно, указывая, что величина градиента тестовых данных больше связанного, и требование нарушено.

Создайте ограничительный объект требования гладкости и задайте градиент, связанный как 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