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

rdivison by logical array in Matlab - Not sure about behaviour

在 Matlab 中我有这个

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

其中 P 是 100x100 矩阵。 我似乎无法理解手术完成后的情况。 X 中存储的值为 0 和 1。

对于下面的语句

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

我最终得到了一个逻辑数组。在一种特定情况下,所有值都是 1。但是一旦引入了逐元素划分

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

我以 1 和 0 结尾。我不明白的是全1的逻辑数组在除法后产生1和0

我是不是漏掉了什么?

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

我假设你的意思如下(注意分母两边的括号)

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

话虽如此,这仍然没有真正意义,因为 1 + exp(-P) 总是 会大于 1(最大值rand) 所以这应该总是产生所有 1

作为旁注,仅仅因为一个数组全是 1 和全 0 并不意味着它是合乎逻辑的,你必须确认使用 class.

class(var)
%   logical