当我在Matlab中输入一个大于max double的数字时,例如10^309,它的值大约为1.79769e+308,则返回Inf。 出于教育目的,我想获取像C编译器这样的溢出异常,该异常返回一个溢出错误消息,而不是Inf。 我的问题是:

Inf是否是溢出异常?

如果是,为什么C编译器不返回Inf?

如果没有,我可以在Matlab中获得溢出异常吗?

Inf和溢出异常之间有什么区别吗?

我也不想在Matlab中检查Inf,然后使用error()函数抛出异常。

@lakesh是什么意思?

@lakesh我不想计算。 同样,1e^309不正确。 我认为您的意思是10^309=1.0e309。

你为什么要这样做? 检查Inf然后抛出异常怎么办?

@David我想这样做只是为了学习。 我想知道溢出异常和Inf之间有什么区别;)

这是一个有效而有趣的问题。 那些反对投票或投票关闭的人应阅读浮点规范如何处理无穷大和溢出的内容。 就像Matlab中一样,它们通常是混合在一起的,但是两者并不相同。

我也不明白反对票。 这是一个完全正确的问题,我实际上对此感到好奇!

1)C / C ++中的浮点

对浮点数进行运算可能会产生非数值的结果。例子:

运算的结果是一个复数(请考虑sqrt(-1.0))

操作的结果是不确定的(请考虑1.0 / 0.0)

运算结果太大而无法表示

在其中一个操作数已经为NaN或Inf的情况下执行操作

IEEE754的理念是默认情况下不捕获此类异常,而是生成特殊值(Inf和NaN),并允许计算正常继续而不中断程序。用户可以测试这些结果并分别进行处理(如MATLAB中的isinf和isnan函数)。

存在两种类型的NaN值:NaN(安静的NaN)和sNaN(发信号的NaN)。通常,当无法成功完成浮点数的所有算术运算时,都会产生静默类型(而不是信令类型)。

有(与平台有关的)函数可以控制浮点环境并捕获FP异常:

Win32 API具有_control87()来控制FPU标志。

POSIX / Linux系统通常通过捕获SIGFPE信号来处理FP异常(请参见feenableexcept)。

SunOS / Solaris也具有自己的功能(请参见《 Sun / Oracle数值计算指南》中的第4章)。

C99 / C ++ 11引入了fenv标头,该标头具有控制浮点异常标志的功能。

例如,查看Python如何为不同平台实现FP异常控制模块:https://hg.python.org/cpython/file/tip/Modules/fpectlmodule.c

2)C / C ++中的整数

这显然与浮点数完全不同,因为整数类型不能表示Inf或NaN:

无符号整数使用模块化算术(因此,如果结果超过最大整数,则值会回绕)。这意味着无符号算术运算的结果始终是"数学定义的",并且永远不会溢出。将此与使用饱和算术对整数(uint8(200) + uint8(200)将为uint8(255))的MATLAB进行比较。

另一方面,有符号整数溢出是未定义的行为。

整数除以零是未定义的行为。

我将重复" MATLAB Answers"网站上的Jan Simon的回答:

要停止(以调试器模式)除以零,请使用:

warning on MATLAB:divideByZero

dbstop if warning MATLAB:divideByZero

类似地,停止取对数零:

warning on MATLAB:log:LogOfZero

dbstop if warning MATLAB:log:LogOfZero

当操作(函数调用或赋值)返回NaN或Inf时停止运行,请使用:

dbstop if naninf

不幸的是,前两个警告似乎不再受支持,尽管最后一个选项在R2014a上仍然对我有效,并且实际上已经记录在案。

另请参阅此问题和解答以及来自Undocumented Matlab的有关捕获警告的文章。

浮点

MATLAB为浮点运算实现了IEEE标准754。

该标准有五个已定义的例外:

无效的操作

被零除

溢出

下溢

不精确

正如GNU C库所指出的那样,这些异常由状态字指示,但不会终止程序。

而是返回一个与异常有关的默认值。该值可以是实际数字,也可以是特殊值。MATLAB中的特殊值是Inf,-Inf,NaN和-0;这些MATLAB符号用于代替官方标准的保留二进制表示形式,以提高可读性和可用性(有点漂亮的语法糖)。

特殊值上的操作定义明确,并且操作直观。

掌握了这些信息后,问题的答案将是:

Inf表示执行了引发以上异常之一(即1、2或3)的操作,并且Inf被确定为默认返回值。

根据C程序的编写方式,正在使用的编译器以及存在的硬件,INFINITY和NaN是可以由C操作返回的特殊值。这取决于是否以及如何实施IEEE-754标准。 C99将IEEE-754实现作为标准的一部分,但是最终由编译器决定实现的工作方式(积极的优化和舍入模式之类的标准选项可能会使其复杂化)。

返回值Inf或-Inf表示可能发生了溢出异常,但也可能是无效操作或零除。我不认为MATLAB会告诉您这是什么(虽然也许您可以通过编译的MEX文件访问该信息,但是我不熟悉这些信息)。

参见答案1。

有关更多有趣和深入的示例,这是一个不错的PDF。

整数

整数在MATLAB中的行为不如上述。

如果对指定位大小的整数进行的运算将超过该类的最大值,则对于负数(如果有符号),它将被设置为最大值,反之亦然。

换句话说,MATLAB整数不会自动换行。

matlab溢出的标志inf,关于C#:溢出与信息相关推荐

  1. 单行文本溢出显示省略号,单行文本溢出显示省略号

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  2. 写代码实现堆溢出、栈溢出、永久代溢出、直接内存溢出

    栈溢出(StackOverflowError) 堆溢出(OutOfMemoryError:Java heap space) 永久代溢出(OutOfMemoryError: PermGen space) ...

  3. MATLAB 交通限速标志识别 限速识别 分割 图像处理 程序 代码

    MATLAB 交通限速标志识别 限速识别 分割 图像处理 程序 代码 一休 科技

  4. matlab 王家文,基于matlab的交通标志自动识别系统

    内容介绍 原文档由会员 猛龙 发布 基于matlab的交通标志自动识别系统 页数 57 字数 19979 摘要 机器视觉也称图像分析与理解.机器视觉的发展推动智能系统的发展,也拓宽计算机与各种智能机器 ...

  5. 基于MATLAB的混沌密码与数字图像加密应用、信息隐藏

    基于MATLAB的混沌密码与数字图像加密应用.信息隐藏 实验目的:利用Matlab软件基于Logistic映射的加密算法对图像进行加密和解密,以及利用DEV C++软件.Excel表格绘制图像基于Lo ...

  6. matlab多变量优化,matlab - Matlab使用fminsearch优化多变量 - 堆栈内存溢出

    我正在使用Matlab fminsearch来最小化带有两个变量的方程sum((interval-5).^2, 2)*factor间隔是一个包含5个值的向量. 只能从1到30的步长为1的顺序选择它们. ...

  7. matlab中rsa,matlab - Matlab中的RSA代码 - 堆栈内存溢出

    我想加密一条消息,例如" HELO1234" ,然后解密以获取原始消息.我已经在matlab中编写了无法正常工作的RSA代码. 参数计算 temp=1; range=1:10; k ...

  8. matlab csc,matlab - 从Matlab CSC转换为CSR格式 - 堆栈内存溢出

    我最终使用CUSP库将Matlab中的CSC格式从Matlab转换为CSR,如下所示. 从matlab获取矩阵A之后,我得到了row , col和values矢量,然后将它们复制到分别为它们创建的th ...

  9. matlab 将图片遮罩处理,matlab - 如何使用交互式网格在matlab上遮罩图像? - 堆栈内存溢出...

    我的工作代码: function [ ] = defect_marking( ) % This function divides a figure into grids. The grid cells ...

最新文章

  1. AppiumForWin安装
  2. python 使用yield进行数据的流式处理
  3. 题解 guP2421 【[NOI2002]荒岛野人】
  4. ffmpeg基本用法(转)
  5. 三大主流开源工作流引擎技术分析与市场预测
  6. [云炬创业基础笔记]第一章创业环境测试7
  7. c语言control表题目,CMFCControl 问题
  8. 跋山涉水——深入 Redis 字典遍历
  9. 浅析Microsoft .net PetShop程序中的购物车和订单处理模块(Profile技术,异步MSMQ消息)
  10. JS表单学习笔记(思维导图)
  11. weblogic 修改控制台console访问路径 url
  12. 关于使用jacob出现的异常
  13. 系统服务器地云盘上,系统服务器地云盘上
  14. 7zip压缩zip格式时文件名支持中文的设置
  15. HBase shell删除表失败:ERROR: Table user is enabled. Disable it first.
  16. 汽车行业DMS系统介绍
  17. 参加第2届全国高校大数据教学研讨会总结
  18. int.prase和int.tryprase
  19. Unity 绘制物体运动轨迹
  20. 《你一学就会的-思维大图》读书笔记

热门文章

  1. SpringBoot在IDEA中实现热部署
  2. 【BZOJ4236】JOIOJI [DP]
  3. 步步为营-68-asp.net简单练习(get set)
  4. 超级有意思的代码注释
  5. MySQL、Oracle、SQL Server
  6. Windows Phone 二、WP控件
  7. 如何禁用双击窗体图标关闭窗体
  8. 哪里可以找到python的免费教程-哪里有免费的python3教程啊?最好是有例子的视频教学...
  9. 安装完python怎么打开安装步骤-Python安装与运行测试详细教程,带你攻克第一个学习难关...
  10. python小课骗局-Python小课怎么样啊?