谁能向我解释一下这行 MatLAB 代码中发生了什么
Can anyone explain to me what is going on in this line of MatLAB code
y = rand(20,3);
aa= unidrnd(2,20,3) - 1;
val = ( aa & y<1.366e-04) | (~aa & y<8.298e-04);
aa(val) = ~aa(val);
我有这个代码。
任何人都可以向我解释这里发生了什么。我试图逐步理解它(调试),但我无法理解在第 4 行中使用反“~”以及使用 'val' 作为索引的目的。
y = rand(20,3);
创建一个均匀分布的随机数矩阵,y
。
aa= unidrnd(2,20,3) - 1;
创建一个均匀分布的随机整数矩阵,从 1 到 2,然后减去 1。因此,aa
是 0 和 1 的矩阵。
val = ( aa & y<1.366e-04) | (~aa & y<8.298e-04);
此行检查 aa
为 1AND y<1.366e-04
或 aa 为 0 AND y<8.298e-04
的所有值。请注意,这几乎不会发生,因为 y
是从 0 到 1 的均匀分布数字,所以这种情况不太可能发生。
aa(val) = ~aa(val);
采用之前计算的所有这些情况,如果发生在该索引中,则 aa
从 0 变为 1 或从 1 变为 0。
y = rand(20,3);
aa= unidrnd(2,20,3) - 1;
val = ( aa & y<1.366e-04) | (~aa & y<8.298e-04);
aa(val) = ~aa(val);
我有这个代码。 任何人都可以向我解释这里发生了什么。我试图逐步理解它(调试),但我无法理解在第 4 行中使用反“~”以及使用 'val' 作为索引的目的。
y = rand(20,3);
创建一个均匀分布的随机数矩阵,y
。
aa= unidrnd(2,20,3) - 1;
创建一个均匀分布的随机整数矩阵,从 1 到 2,然后减去 1。因此,aa
是 0 和 1 的矩阵。
val = ( aa & y<1.366e-04) | (~aa & y<8.298e-04);
此行检查 aa
为 1AND y<1.366e-04
或 aa 为 0 AND y<8.298e-04
的所有值。请注意,这几乎不会发生,因为 y
是从 0 到 1 的均匀分布数字,所以这种情况不太可能发生。
aa(val) = ~aa(val);
采用之前计算的所有这些情况,如果发生在该索引中,则 aa
从 0 变为 1 或从 1 变为 0。