matlab中逻辑数组的rdivison - 不确定行为

时间:2016-09-24 18:52:19

标签: arrays matlab division

在Matlab中我有这个

X = double(1./(1+exp(-P)) > rand(size(P)))

其中P是100x100矩阵。 我似乎无法理解操作完成后发生了什么。存储在X中的值是0&1;和1' s。

以下声明

(1+exp(-P)) > rand(size(P))

我最终得到一个逻辑数组。在一个特定情况下,所有值都是1。但一旦元素分裂被诱导

1./(1+exp(-P)) > rand(size(P))

我最终得到了1和0。我不明白的是,所有1的逻辑数组在分割后产生1&0和#0

我错过了什么吗?

1 个答案:

答案 0 :(得分:1)

问题是在<{em> >比较之前评估除法(更多关于运算符优先级here)。编写它的方式是,使用1 ./ (1 + exp(-P))rand(size(P))>进行比较,并返回true,其中第一个表达式大于随机数。

我假设您的意思如下(注意分母周围的括号)

1 ./ ((1+exp(-P)) > rand(size(P)))

话虽如此,这仍然没有意义,因为1 + exp(-P) 总是大于1({{1}的最大值因此,这应该始终产生所有rand

作为旁注,仅仅因为数组是1和0并且0并不意味着它是合乎逻辑的,你必须使用1来确认。 / p>

class