创建 quadraticSolver.m 函数

此 MATLAB 函数求二次方程的解。在您的 MATLAB 路径上的文件夹中创建此函数。

function roots = quadraticSolver(a, b, c)

% quadraticSolver returns solutions to the

% quadratic equation a*x^2 + b*x + c = 0.

if ~isa(a,'numeric') || ~isa(b,'numeric') || ~isa(c,'numeric')

error('quadraticSolver:InputMustBeNumeric', ...

'Coefficients must be numeric.');

end

roots(1) = (-b + sqrt(b^2 - 4*a*c)) / (2*a);

roots(2) = (-b - sqrt(b^2 - 4*a*c)) / (2*a);

end

创建 solverTest 函数

在您的 MATLAB 路径上的文件夹中创建此函数。

function tests = solverTest

tests = functiontests(localfunctions);

end

使用 localfunctions 作为输入调用 functiontests 可从 solverTest.m 文件中的每个局部函数创建一个测试数组。每个测试都是一个局部函数,它遵从在函数名称开头或末尾包含“test”的命名约定。不遵从此约定的局部函数不包括在测试数组中。测试函数必须接受测试框架向其传递函数测试用例对象的单个输入参数。该函数对验证、断言、假设和致命断言使用此对象。它包含一个允许在设置、测试和拆解函数之间传递数据的 TestData 结构体。

为实数解创建测试函数

创建一个测试函数 testRealSolution 来验证 quadraticSolver 是否返回实数解的正确值。例如,方程 x2 - 3x + 2 = 0 有实数解 x = 1 和 x = 2。此函数使用此方程的输入调用 quadraticSolver。预期的解 expSolution 为 [2,1]。

使用验证函数 verifyEqual 将函数的输出 actSolution 与所需的输出 expSolution 进行比较。如果验证失败,该框架继续执行测试。通常,在对浮点值使用 verifyEqual 时,可指定用于比较的容差。有关详细信息,请参阅 matlab.unittest.constraints。

将此函数添加到 solverTest.m 文件中。

function testRealSolution(testCase)

actSolution = quadraticSolver(1,-3,2);

expSolution = [2 1];

verifyEqual(testCase,actSolution,expSolution)

end

为虚数解创建测试函数

创建一个测试以验证 quadraticSolver 是否返回虚数解的正确值。例如,方程 x2 + 2x + 10 = 0 有虚数解 x = -1 + 3i 和 x = -1 - 3i。通常,在对浮点值使用 verifyEqual 时,可指定用于比较的容差。有关详细信息,请参阅 matlab.unittest.constraints。

将此函数 testImaginarySolution 添加到 solverTest.m 文件中。

function testImaginarySolution(testCase)

actSolution = quadraticSolver(1,2,10);

expSolution = [-1+3i -1-3i];

verifyEqual(testCase,actSolution,expSolution)

end

solverTest.m 文件中测试的顺序无关紧要,因为它们是完全独立的测试用例。

保存 solverTest 函数

下面是完整的 solverTest.m 测试文件。将此文件保存在您的 MATLAB 路径上的一个文件夹中。

function tests = solverTest

tests = functiontests(localfunctions);

end

function testRealSolution(testCase)

actSolution = quadraticSolver(1,-3,2);

expSolution = [2 1];

verifyEqual(testCase,actSolution,expSolution)

end

function testImaginarySolution(testCase)

actSolution = quadraticSolver(1,2,10);

expSolution = [-1+3i -1-3i];

verifyEqual(testCase,actSolution,expSolution)

end

在 solverTest 函数中运行测试

运行测试。

results = runtests('solverTest.m')

Running solverTest

..

Done solverTest

__________

results =

1x2 TestResult array with properties:

Name

Passed

Failed

Incomplete

Duration

Totals:

2 Passed, 0 Failed, 0 Incomplete.

0.19172 seconds testing time.

两个测试均通过。

在 quadraticSolver.m 中引入错误并运行测试

通过将 quadraticSolver.m 中的 roots 强制设置为实数来使其中一个测试失败。在结束函数之前,添加以下行:roots = real(roots);。(请不要更改 solverTest.m。)保存文件并运行测试。

results = runtests('solverTest.m')

Running solverTest

.

================================================================================

Verification failed in solverTest/testImaginarySolution.

---------------------

Framework Diagnostic:

---------------------

verifyEqual failed.

--> Complexity does not match.

Actual Complexity:

Real

Expected Complexity:

Complex

Actual Value:

-1 -1

Expected Value:

-1.000000000000000 + 3.000000000000000i -1.000000000000000 - 3.000000000000000i

------------------

Stack Information:

------------------

In C:\work\solverTest.m (testImaginarySolution) at 14

================================================================================

.

Done solverTest

__________

Failure Summary:

Name Failed Incomplete Reason(s)

===============================================================================

solverTest/testImaginarySolution X Failed by verification.

results =

1x2 TestResult array with properties:

Name

Passed

Failed

Incomplete

Duration

Totals:

1 Passed, 1 Failed, 0 Incomplete.

0.043751 seconds testing time.

虚数测试验证失败。

将 quadraticSolver.m 恢复为其以前的状态,通过删除 roots = real(roots); 代码更正版本。

matlab isa函数,使用函数编写简单测试用例相关推荐

  1. 【Matlab】使用C语言编写简单S-Function

    功能描述: 实现一个双输入,双输出,使用两个参数,使得输出为: y1 = para1 * u1 + 5 y2 = para2 * u2 + 3 代码如下: #define S_FUNCTION_NAM ...

  2. matlab编写正整数阶乘函数,用matlab语言编写程序:编写一个计算阶乘的函数,再编写一个脚本文件,通过键盘输入计算阶乘的n值....

    点击查看用matlab语言编写程序:编写一个计算阶乘的函数,再编写一个脚本文件,通过键盘输入计算阶乘的n值.具体信息 答:编写一个matlab文件,求1到n的阶乘之和.其代码编写的目的,就是学会自定义 ...

  3. 【 MATLAB 】通过案例学会编写一个 matlab 函数(小猫掉进山洞问题)

    这是关于matlab学习的第一篇博文,我是不愿意承认自己不会MATLAB的,因为这东西大一的时候就学过,如果白驹过隙,都不好意思说自己研几了,科研的过程中MATLAB是必须要会的,于是得系统的看一下了 ...

  4. 【Matlab】如何规范地编写一个MATLAB函数文件

    在matlab中,M文件分为脚本文件和函数文件.如果M文件的第一个可执行语句以function开头,那这个M文件就是函数文件.函数文件内定义的变量为局部变量,只在函数文件内部起作用,当函数文件执行完后 ...

  5. MATLAB contour 和 contourf 函数 简单例子

    MATLAB contour 和 contourf 函数 简单例子 x = -10:0.1:10; y = 0:0.1:5; % 横向201个数 纵向51个数 [X,Y] = meshgrid(x,y ...

  6. 如何用matlab编写分段函数_请教各位怎样用matlab定义一个分段函数MATLAB分段函数...

    请教各位怎样用matlab定义一个分段函数 MATLAB分段函数 www.zhiqu.org     时间: 2020-12-08 matlab提供了了两种定义分段函数的方法: 常规方法:使用if.. ...

  7. 浅析MATLAB中的内联函数、匿名函数和函数函数

    内联函数 内联(inline)函数是MATLAB 7以前经常使用的一种构造函数对象的方法.在命令窗口.程序或函数中创建局部函数时,通过使用inline构造函数,而不用将其储存为一个M文件,同时又可以像 ...

  8. matlab randi 函数,MATLAB中的randi函数

    randi Pseudorandom integers from a uniform discrete distribution.来自一个均匀离散分布的伪随机整数 R = randi(IMAX,N) ...

  9. matlab 子函数怎么写,matlab中怎么写函数

    1.matlab怎么写函数文件~ 1.首先在电脑中打开baimatlab软件. 2.在打开的页面中点击"du主页"栏目下的"新建"按钮.zhi 3.然后在打开的 ...

最新文章

  1. squid中的X-Cache和X-Cache-Lookup的意义
  2. oracle中按指定条数批量处理的方法
  3. java点到直线的投影点到经纬度_12分高考答题必刷题型,“空间向量分析点到线的距离问题”...
  4. Gumbel-Softmax Trick和Gumbel分布 附VAE讲解
  5. 终于有人讲透了芯片是什么(电子行业人士必读)
  6. display:none和visible:hidden两者的区别
  7. Dingo Api 入门
  8. Android秒级编译方案-FreeLine
  9. 使命召唤手游迎来欧阳娜娜,这阵容够豪华,玩家期待吗?
  10. 属性编辑器未在PropertyEditorManager中注册?
  11. arcgis 10.1 导入数据到oracle 发布地图服务
  12. 继续上一篇剩下的例子
  13. python import from区别_python中import与from方法总结(推荐)
  14. (整理)RMAN备份详解
  15. 计算机组成原理平均cpi怎么算_计算机组成原理 第1--4章
  16. 在Edge浏览器中设置编码方式
  17. 如何判断三极管的集电极,基极和发射极?
  18. ajax.googleapis firefox,使用Redirector插件解决googleapis公共库加载的问题【转】
  19. 自开发数据可视化平台
  20. 项目管理基础:10.项目沟通管理

热门文章

  1. python测试题 - 列表,字典,字符串
  2. RESTful  Web APIs设计风格
  3. Ajax实现页面加载等待
  4. HttpModule的认识
  5. 每天进步一点点《ML - 支持向量机》
  6. python查看运行内存占用_python中使用psutil查看内存占用的情况
  7. Python中内存管理的问题
  8. openmp与openmpi区别
  9. STL和C++标准库
  10. LeetCode —— 71.简化路径(Python3)