空数组演算
在我开始使用MATLAB程序之前,MATLAB就已经有了空数组。当我开始时,唯一的大小空数组是0 x0.当第5版发布时,空数组出现了n维,并且变得更有形状。
内容
即使是涉及空数组的相对简单的表达式也会不时引起混淆,特别是与MATLAB中的其他规则(例如南值通常从输入传播到输出)。让我们稍微研究一下空数组来了解一些情况。
来自新闻组
这帖子关于MATLAB新闻组的讨论激发了我谈论空数组的兴趣。以下是原文的节选:
我知道Nan+4 = Nan,但为什么[]+4 = []?我还应该知道更多的“黑洞行为”吗?
MATLAB中的Dimensions Matter
在MATLAB中,维度很重要,当维度不一致时,你会得到错误消息。在早期,我们发现将标量作为运算符的异常处理是很方便的(例如,,.),并将它们视为扩展到另一个操作数的大小。所以
Rand (3,3) +
Ans = 4.10648118878907 4.09875960183274 3.28347899221701 3.29920573526734 3.62696830231263 3.56335393621607 4.11218543535041 3.94187312247859 4.05732817877886
添加值π随机的3 x3刚刚创建的。这就好像一个3 x3用值填充的常量数组π创建并将elementwise添加到另一个数组。
这对空操作数意味着什么呢?它的大小至少有一个0值。所以MATLAB扩展了π在这个表达式中[] + PI大小与…相同[](这恰好是0 x0这里)。当这种情况发生时,MATLAB创建第二个空数组,然后添加这两个空数组。因此我们得到
[] + PI
Ans = []
返回空输出。
MATLAB将标量展开规则应用于运算符。举个例子,大小(任何+标量)是大小(任何).作为一个逻辑上但有时令人惊讶的结果,空数组经常(但不总是)在计算中传播。什么时候不会发生这种情况?在一些函数中,数学逻辑分析需要不同的结果。
总和([])
Ans = 0
刺激([])
Ans = 1
为什么和是0,积是1?因为它们分别是和和和积的单位元(在群论中)。考虑一下如何开始计算和或乘积,以及如何初始化第一个值。这是在添加或乘以任何数组元素之前给出的值,因此分别为0和1。
空数组形状
空数组可以是n维的,不需要所有维都为0。但是,他们仍然必须遵守关于需要一致同意的尺寸的规则。结果可能会让你大吃一惊,但它们确实符合逻辑。下面是一个尝试添加两个空数组的示例,结果出现错误!
A = 0 (0,1) b = 0 (1,0)试一试a + b抓MEplus流(' \ n ') disp (MEplus.message)结束
a =空矩阵:0乘1 b =空矩阵:1乘0矩阵维数必须一致。
参考
有关空数组的更多信息,请查看这个页面在文档中。
有一个空问题?
有什么空洞的问题吗(真的,关于空洞的问题!)?或意见吗?将它们贴在这里.