cell array indexing with logical index bug?
Thorsten Meyer
thorsten.meyier at gmx.de
Sat Nov 1 17:54:18 CDT 2008
Hi,
with octave built from the current tip I get:
octave:1> a{1}=1
a =
{
[1,1] = 1
}
octave:2> a(1)=[]
a = {}(1x0)
octave:3> a{1}=1
a =
{
[1,1] = 1
}
octave:4> a(1==1)=[]
error: A(I): Index exceeds matrix dimension.
octave:4> a{1}=1;a{2}=2;
octave:5> a(1==1)=[]
a =
{
[1,1] = 2
}
octave:6> a{1}=1;a{2}=2;
octave:7> a([1 2])=[]
error: A(I): Index exceeds matrix dimension.
So I can empty a cell array indexing with single index of type double, but not with a single index
of type logical. If the index is a vector, it does not matter if it is double or logical.
I am not sure if this is a bug. Imho, it is at least a misfeature: e.g., when I want to eliminate
entries of a by a certain criterion, i could do:
idx = cellfun (@(x) x>0, a);
a(idx) = [];
But with the above behaviour I have to specially treat the case that all elements of a fulfil the
criterion.
regards
Thorsten
More information about the Bug-octave
mailing list