[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Logical indexing and Octave manual example
From: |
John W. Eaton |
Subject: |
Logical indexing and Octave manual example |
Date: |
Wed, 05 Mar 2008 20:17:20 -0500 |
On 5-Mar-2008, Tim Largy wrote:
| I'm having trouble understanding an example in section 4.4 "Logical
| Values" of the Octave manual
|
(http://www.gnu.org/software/octave/doc/interpreter/Logical-Values.html#Logical-Values).
| The manual has:
|
| data = [ 1, 2; 3, 4 ];
| idx = (data <= 2);
| data(idx)
| => ans = [ 1; 4 ]
That looks like an error in the manual. The result should be [ 1; 2 ].
| However my Octave version 2.1.73 (i686-pc-cygwin) returns a different result:
|
| octave:72> data = [ 1, 2; 3, 4 ];
| octave:73> idx = (data <= 2);
| octave:74> data(idx)
| ans =
|
| 1
| 2
|
| In neither case can I understand the underlying logic. The value of
| idx is [1, 1; 0, 0]. What rules determine how a matrix such as this is
| used in logical indexing?
The values are logical (true/false). So the index selects acts as a
mask and selects elements that correspond to true values in the mask.
Just above the example you quote, it says
Logical values can also be used to index matrices and cell
arrays. When indexing with a logical array the result will be a
vector containing the values corresponding to true parts of the
logical array.
Perhaps it should say "true elements" and/or use the word mask?
jwe