[Chanegset]: Re: cat does not convert sparse matrices?

David Bateman David.Bateman at motorola.com
Thu Sep 18 10:03:32 CDT 2008


David Bateman wrote:
> dbateman wrote:
>> In fact I think I see two bugs here
>>
>>
>> Francesco Potorti`-2 wrote:
>>> In Octave 3.0.1, I cannot catenate a full double matrix with a sparse
>>> logical matrix.  Is this normal or a bug?
>>>
>>> octave> a=zeros(3,3,0);
>>> octave> b1=zeros(3,3);
>>> octave> b2=sparse(1,1,true,3,3);
>>> octave> whos a b1 b2
>>>
>>> *** local user variables:
>>>
>>>   Prot Name        Size                     Bytes  Class
>>>   ==== ====        ====                     =====  =====    rwd 
>>> a           3x3x0                        0  double
>>>    rwd b1          3x3                         72  double
>>>    rwd b2          3x3                         21  logical
>>>
>>> Total is 10 elements using 93 bytes
>>>
>>> octave> size(cat(3,a,b1))
>>> ans =
>>>
>>>    3   3   1
>>>
>>
>> Trailing singleton dimensions should be dropped, So I suspect there is a
>> function call missing in the cat function that should do this.
>>
>
> The attached patch addresses this, but
>
>>
>>
>>> octave> size(cat(3,a,b2))
>>> error: invalid conversion of NDArray to Matrix
>>> error: range error for insert
>>> error: evaluating argument list element number 1
>>>
>>
>> The sparse logical matrix should be promoted to a sparse matrix and the
>> concatenation allowed. Ok, I'll look at this wen I'm on a development
>> machine.
>
> It seems I missed the point you made by this one.. Sparse logical 
> matrices are promoted to sparse double matrices before concatenation 
> with another double matrix. The issue above is that a 3x3x0 is an 
> NDArray and the Sparse matrix type only supports 2D arrays and so the 
> conversion of the 3x3x0 array to a sparse matrices prior to the 
> concatenation fails. It would be interesting to know what matlab does 
> in this case, as I suspect it fails as well. If it doesn't then I 
> suppose we need to special case for this.

For this case in MatlabR2007b

 >> cat(3,zeros(2,2,0),speye(2))
??? Error using ==> cat
CAT arguments dimensions are not consistent.

So it seems they don't support this either..

D.


-- 
David Bateman                                David.Bateman at motorola.com
Motorola Labs - Paris                        +33 1 69 35 48 04 (Ph) 
Parc Les Algorithmes, Commune de St Aubin    +33 6 72 01 06 33 (Mob) 
91193 Gif-Sur-Yvette FRANCE                  +33 1 69 35 77 01 (Fax) 

The information contained in this communication has been classified as: 

[x] General Business Information 
[ ] Motorola Internal Use Only 
[ ] Motorola Confidential Proprietary



More information about the Help-octave mailing list