在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
我错过了什么吗?
答案 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