罗兰在MATLAB的艺术

把想法变成MATLAB

请注意

罗兰在MATLAB的艺术已经存档,不会被更新。

没有正,nan,或碎片

你可能听说过这句话“没有如果,and,或借口”——这意味着,无论问题是什么,有一个明确的、不可转让的答案或结果。我听到时经常试图说服我的父母让我做一些他们不让我做。今天当我听见有人使用这句话,我听到的相反的是“没有|正|年代,|南|年代,或比特”。今天我将谈论这些值和类型。

内容

谈论无穷

在许多应用程序中,一个无限的结果是不能接受的。我记得一个量子物理期末考试的问题,我做得到,但后来意识到我需要反正切(量化),所有与我的回答很好。我们如何检测存在无穷?使用的是*函数!

让我把一堆值到一个数组中我们可以检查各种值或条件。

vals =[负0π17 42正南)
vals =负0 3.1416 17.0000 42.0000 Inf NaN

请注意,isinf正确找到积极的和消极的无限价值。第一次我看到哪些是无限的,那么我选择显示,通过逻辑索引。

nonInfVals = isinf (val) myInfVals = vals (nonInfVals)
nonInfVals = 1 0 0 0 0 1 0 myInfVals =负无穷到正无穷

相反,我可以找到有限值。

finiteVals = vals (isfinite (val))
finiteVals = 0 3.1416 17.0000 42.0000

为一个很好的使用在一个算法,结账这篇文章,一个结果表明,不小于阈值的解决方案是可用的。

现在nan

当然,这是我长期的朋友isnan选择,一个伟大的工具值,以及逻辑索引、替换或删除它们。

replacedNaNvals = vals;replacedNaNvals (isnan (replacedNaNvals)) = -999
replacedNaNvals =负0 3.1416 17.0000 42.0000 -999.0000正无穷

MATLAB的确有一些函数对数组操作位操作,但没有数据类型。

而MATLAB没有数据类型,它有一些整数类型。让我们看看我们如何使用它。我将创建一个与不同类型单元阵列每个单元我们可以探索一群类型在一个调用。

mycell ={魔法(2)uint8(魔法(2))“但是”;int32(魔法(3))(Inf无穷)南;逻辑(眼(2)){魔法(2)}{uint8(魔法(2))}}
mycell = [2 x2双][2 x2 uint8] '但是' [3 x3 int32] [1 x2双](南)(2 x2逻辑){1 x1细胞}{1 x1细胞}

让我们看看isinteger可以告诉我们。

integerCells = cellfun (@isinteger mycell)
integerCells = 0 1 0 1 0 0 0 0 0

注意,这个函数,isinteger,基本上在每一个单独的数组,而不是elementwise,回答问题,因为它是类型的数组,而不是单个值。一些是*数组函数法elementwise等作用于作为一个整体。

铸造了一个答案

有一些更有趣的功能功能覆盖数值类型,尤其是定型定型允许您将数据类型没有改变底层数据。让你把不同数据类型的变量。和swapbytes让你交换字节次序,特别是用于改变数据的字节顺序。

我敢打赌…

没有假设and或转折——我敢肯定你们中的很多人已经充分利用其中的几个正,nan,和一些功能。什么样的数据值与MATLAB争吵你会怎么做?我的意思是像我在这篇文章中提到的,“大”不如高峰或异常值检测。MATLAB和附加产品确实有许多功能下载188bet金宝搏。我在找“小”事。请让我知道在这里




发表与MATLAB®R2015b


评论

留下你的评论,请点击在这里MathWorks账户登录或创建一个新的。