[scilab-Users] Matlab ismember

Michaël Baudin michael.baudin at scilab.org
Mon Jan 17 16:30:35 CET 2011


Oups, this is the good one :

http://bugzilla.scilab.org/show_bug.cgi?id=8792

Michaël

Le 17/01/2011 16:26, Michaël Baudin a écrit :
> See the discussion at :
>
> http://bugzilla.scilab.org/process_bug.cgi
>
> Best regards,
>
> Michaël Baudin
>
> Le 17/01/2011 16:10, Michaël Baudin a écrit :
>> Hi,
>>
>> Ok, now I remember, it is there :
>>
>> http://forge.scilab.org/index.php/p/number/source/tree/HEAD/macros/number_ismember.sci
>>
>> Unfortunately, I have not released this function in the binary 
>> release yet.
>> Here is a simplified version:
>>
>> function tf = number_ismember ( a , s )
>>     // Array elements that are members of set.
>>     //
>>     // Calling Sequence
>>     // tf = number_ismember ( a , s )
>>     //
>>     // Parameters
>>     // a : a ma-by-na matrix
>>     // s : a 1-by-ns matrix
>>     // tf : a ma-by-na matrix of booleans, tf(i,j) is %t if there is 
>> an entry in s matching a(i,j).
>>     //
>>     // Description
>>     // Search in a the entries which are in s.
>>     //
>>     // Uses vectorized statements, based on the Kronecker product.
>>     // The intermediate memory required is ma*na*ns.
>>     //
>>     // Examples
>>     // a = (1:5)'
>>     // s = [0 2 4 6 8 10 12 14 16 18 20]
>>     // tf = number_ismember ( a , s )
>>     // expected = [%f %t %f %t %f]'
>>     //
>>     // // An example with a matrix
>>     // a = [
>>     // 7 35 14 86 76
>>     // 15 51 24 96 49
>>     // 35 40 46 35 93
>>     // 85 34 74 82 22
>>     // ];
>>     // s = [51 74 22 15 86]
>>     // tf = number_ismember(a, s)
>>     //
>>     // Authors
>>     // Copyright (C) 2010 - DIGITEO - Michael Baudin
>>
>>     //
>>     // Check size
>>     // a can have any shape
>>     if ( s==[] ) then
>>       tf=(ones(a)==zeros(a))
>>       return
>>     end
>>     //
>>     // Check content
>>     // Nothing to do.
>>     //
>>     // Proceed...
>>     if ( a==[] ) then
>>       tf=[]
>>       return
>>     end
>>     //
>>     // Convert a into a column vector
>>     ma = size(a,"r")
>>     na = size(a,"c")
>>     a=a(:)
>>     //
>>     ns = size(s,"c")
>>     sp = s .*. ones(na*ma,1)
>>     ap = a .*. ones(1,ns)
>>     tf = or(ap==sp,"c")
>>     //
>>     // Convert tf into the same shape as a
>>     tf=matrix(tf,ma,na)
>> endfunction
>>
>> This is an example:
>>
>> -->     a = [
>> -->     7 35 14 86 76
>> -->     15 51 24 96 49
>> -->     35 40 46 35 93
>> -->     85 34 74 82 22
>> -->     ];
>>
>> -->     s = [51 74 22 15 86]
>>  s  =
>>
>>     51.    74.    22.    15.    86.
>>
>> -->     tf = number_ismember(a, s)
>>  tf  =
>>
>>   F F F T F
>>   T T F F F
>>   F F F F F
>>   F F T F T
>>
>> Best regards,
>>
>> Michaël
>>
>> Le 16/01/2011 19:56, dragomir nedeltchev a écrit :
>>> thank you very much
>>>
>>> --- On *Sun, 1/16/11, Samuel Gougeon 
>>> /<Samuel.Gougeon at univ-lemans.fr>/* wrote:
>>>
>>>
>>>     From: Samuel Gougeon <Samuel.Gougeon at univ-lemans.fr>
>>>     Subject: Re: [scilab-Users] Matlab ismember
>>>     To: users at lists.scilab.org
>>>     Date: Sunday, January 16, 2011, 6:21 PM
>>>
>>>
>>>     Hello,
>>>
>>>     dragomir nedeltchev <dnedelchev65 at yahoo.com
>>>     </mc/compose?to=dnedelchev65 at yahoo.com>> a écrit :
>>>
>>>     > Hi, Can you help me replicate MATLAB's ismember in SciLab?
>>>     Thanks. Drago
>>>
>>>     You may read the followinf thread:
>>>     http://lists.scilab.org/cgi-bin/ezmlm-browse?list=users&cmd=threadindex&month=200911&threadid=epdldcdicfagcdofccbc
>>>     <http://lists.scilab.org/cgi-bin/ezmlm-browse?list=users&cmd=threadindex&month=200911&threadid=epdldcdicfagcdofccbc>
>>>
>>>     When you have well defined keywords as here, you should use them
>>>     to search
>>>     through the archives:
>>>     http://lists.scilab.org/cgi-bin/ezmlm-browse?list=users&cmd=search
>>>     <http://lists.scilab.org/cgi-bin/ezmlm-browse?list=users&cmd=search>
>>>
>>>     Regards
>>>     Samuel
>>>
>>>
>>>
>>
>>
>> -- 
>> Michaël Baudin
>> Ingénieur de développement
>> michael.baudin at scilab.org
>> -------------------------
>> Consortium Scilab - Digiteo
>> Domaine de Voluceau - Rocquencourt
>> B.P. 105 - 78153 Le Chesnay Cedex
>> Tel. : 01 39 63 56 87 - Fax : 01 39 63 55 94
>>
>
>
> -- 
> Michaël Baudin
> Ingénieur de développement
> michael.baudin at scilab.org
> -------------------------
> Consortium Scilab - Digiteo
> Domaine de Voluceau - Rocquencourt
> B.P. 105 - 78153 Le Chesnay Cedex
> Tel. : 01 39 63 56 87 - Fax : 01 39 63 55 94
>


-- 
Michaël Baudin
Ingénieur de développement
michael.baudin at scilab.org
-------------------------
Consortium Scilab - Digiteo
Domaine de Voluceau - Rocquencourt
B.P. 105 - 78153 Le Chesnay Cedex
Tel. : 01 39 63 56 87 - Fax : 01 39 63 55 94


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.scilab.org/pipermail/users/attachments/20110117/de15aebb/attachment.htm>


More information about the users mailing list