【发布时间】:2015-10-12 13:06:09
【问题描述】:
我已阅读有关逻辑索引的 this 文档,但它并没有说明我的问题。
我有这行代码: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);
我无法理解最后一行 aa(val) = ~aa(val); 中发生了什么。
here 提出了类似的问题,但它没有具体回答逻辑索引的问题或逻辑值的含义。
运行代码时,val's 元素为零。
这是棘手的部分,如果我只运行aa(val) 或~aa(val),我会得到Empty matrix: 0-by-1。但是,如果我运行整行 aa(val) = ~aa(val);,我会得到一个矩阵 aa(带有 0 和 1,20x3)。'~' 正在执行值的反转,对吗?这意味着它应该分配一个 1 (20x3) 的矩阵。但显然不是!我
谁能告诉我最后一行发生了什么。
【问题讨论】:
-
真的,你刚才在上一个问题中问过我这个问题
-
这里提出的问题更具体我相信@AnderBiguri
-
我将您链接到一个帖子,并在 cmets 中进行了解释。问题有点不同,不过,这只是对 Matlab 索引的基本误解,我确实将您链接到一个解释该问题的问题
-
是的,我阅读了您发给我的链接。我确实从中得到了很多信息,但这还不够。无论如何,我确实找到了更多文档并阅读了它们,但没有一个可以澄清我的疑问。因此,如您所见,这个问题更具针对性。