Main Content

assessVariableEqual

针对变量存在情况和等式执行多项检查

说明

assessVariableEqual(variableName,expectedValue) 确定变量 variableName 是否存在,是否与变量 expectedValue 具有相同的数据类型、相同的大小以及相同的值。如果变量 expectedValue 是数值,则使用默认容差来确定等式。如果 expectedValue 是数组,则通过对数组中的每个元素应用默认容差来确定等式。

assessVariableEqual(variableName,expectedValue,Name,Value) 使用由一个或多个 Name,Value 对组参量指定的额外选项。

如果答案不满足评判测试中的条件,则学生会收到一条反馈消息,消息文本取决于不满足条件的情况。您还可以使用 Feedback Name,Value 对组提供额外的自定义反馈。

示例

示例

全部折叠

将学生提交变量 avgX 与参考答案变量 avgX 进行比较。系统会自动应用默认容差。

assessVariableEqual('avgX',referenceVariables.avgX)

如果学生变量 avgX 错误,则答案不会通过,并且学生会收到错误值的默认反馈:

Variable avgX has an incorrect value.

将学生提交的数组 myArray=[1 1 4 4] 与参考答案数组 myArray=[1 2 3 4] 进行比较。如果数组中的值在 0.03 (3%) 的相对误差容限范围内,则接受学生提交的内容。

assessVariableEqual('myArray', referenceVariables.myArray,'RelativeTolerance',0.03)

在此用例中,容差得到满足,原因在于期望值与实际值 [0 1 1 0] 的绝对差值不等于或小于期望值与相对容差的对应绝对乘积:[0.03 0.06 0.09 0.12]。此函数将返回错误值的默认反馈消息。

Variable myArray has an incorrect value.

将学生提交的数组 myArray=[1 1 4 4] 与参考答案数组 myArray=[1 2 3 4] 进行比较。如果数组中的值在绝对误差容限 1 内,则接受学生提交的内容。

assessVariableEqual('myArray', referenceVariables.myArray,'AbsoluteTolerance',1)

在此用例中,容差得到满足,原因在于期望值和实际值之间的绝对差值均小于或等于对应的绝对容差。

将学生提交变量 avgX 与参考答案变量 avgX 进行比较。如果提交变量错误,请提供额外的自定义反馈来指导学生。

assessVariableEqual('avgX',referenceVariables.avgX,'Feedback','Refer to the Week 2 handout on Averages.')

如果学生提交的 avgX 值错误,则答案不会通过,并且除收到默认反馈外,学生还会收到额外的自定义反馈。

Variable avgX has an incorrect value.

Refer to the Week 2 handout on Averages.

输入参数

全部折叠

学生在求解习题时应该使用的变量名称,指定为字符。

示例: 'learnerValue'

答案中使用的变量的正确值,指定为任何受支持的数据类型。也允许仅包含受支持的数据类型的结构体、表和单元格。datetime、duration 和 calendarDuration 等数据类型会忽略应用的任何格式。

如果您已经创建了参考答案,也可以通过使用 referenceVariables.variableName 表示法使 expectedValue 成为参考答案中的一个变量。例如,assessVariableEqual('X',referenceVariables.X) 将学生答案中 X 的值与参考答案中 X 的值进行比较。

如果存在名称为 variableName 的变量,并且此变量与 expectedValue 具有相同的数据类型、大小和值,则答案标记为正确。如果答案不满足评判测试中的条件,则学生会收到一条反馈消息,具体消息文本取决于不满足条件的情况。

条件消息

提交的答案中不存在变量。

提交的答案中必须包含变量名称 <varname>

变量数据类型错误,此数据类型与 expectedValue 的数据类型不匹配。

变量 <varname> 的数据类型必须为 <correct_type>。当前的数据类型为 <incorrect_type>。检查为变量赋值的位置。

数据大小错误,此数据大小与 expectedValue 的大小不匹配。

变量 <varname> 的大小必须为 <correct_size>
当前大小为 <incorrect_size>。检查为变量赋值的位置。

变量值错误,此变量值与 expectedValue 不匹配。

变量 <varname> 的值错误。

注意

将学生答案中的变量与另一个变量进行比较时,这些变量必须具有不同的名称。例如,将学生答案中的 avgX 与参考答案中的 avgX 进行比较时,可将参考变量格式化为 referenceVariables.avgX

如果 expectedValue 是参考答案中不包含的变量,请使用与学生变量不同的变量名称,以避免与自身进行比较。例如:

assessVariableEqual('avgX',xSol)

示例: referenceVariables.xSol

数据类型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical | char | string | categorical | datetime | duration | calendarDuration | sym

名称-值参数

将可选参量对组指定为 Name1=Value1,...,NameN=ValueN,其中 Name 是参量名称,Value 是对应的值。名称-值参量必须出现在其他参量之后,但对组的顺序无关紧要。

如果是 R2021a 之前的版本,请使用逗号分隔每个名称和值,并将 Name 放入引号中。

示例: 'Feedback',’Refer to Week 1 video on Finding the Quadratic Polynomial'

绝对容差,指定为以逗号分隔的对组,该对组由 'AbsoluteTolerance' 和一个数值数组组成。该容差仅适用于相同数据类型的数值。该值可以是与 expectedValue 具有相同大小的标量或数组。

默认情况下,绝对容差为 1e-4。要满足绝对容差,必须满足以下条件:

abs(expected-actual) <= AbsoluteTolerance

在未指定容差或者同时指定绝对容差和相对容差的情况下,如果应用的绝对容差或相对容差通过等式检查,则答案会通过。

如果仅指定了绝对容差,系统将忽略相对容差。

示例: ’AbsoluteTolerance’,1.0

相对容差,指定为以逗号分隔的对组,该对组由 ‘RelativeTolerance’ 和一个数值数组组成。该容差仅适用于相同数据类型的数值。该值可以是与 expectedValue 具有相同大小的标量或数组。

默认情况下,相对容差为 0.001。要满足相对容差,必须满足以下条件:

abs(expected-actual) <= RelativeTolerance.*abs(expected)

在未指定容差或者同时指定绝对容差和相对容差的情况下,如果应用的绝对容差或相对容差通过等式检查,则答案会通过。

仅指定相对容差时,系统会忽略绝对容差。

示例: ’RelativeTolerance’,0.05

当答案标记为错误时向学生显示的额外反馈,指定为以逗号分隔的对组,该对组由 'Feedback' 和一个字符数组组成。使用反馈提供学生可用来更正其代码的资源。虽然您无法了解哪些条件未得到满足,但您可以引导学生参阅特定课程或涵盖该特定课程的阅读材料。

例如,假设评判测试包括 Feedback Name,Value 对组:

'Feedback','See class resource for assigning variable values.'
如果对于要比较的变量而言学生提交的值有错误,则答案不会通过,并且除收到默认反馈外,学生还会收到额外的自定义反馈。

Variable myVariable has an incorrect value.

See class resource for assigning variable values.

版本历史记录

在 R2016a 中推出