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
在 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