[Scilab-users] Converting string months to month numbers

Rafael Guerra jrafaelbguerra at hotmail.com
Thu Oct 20 19:08:44 CEST 2016


Hi Scilaber's,

Fyi, another approach using execstr + evstr functions:

// use month names in M to create 12 variables that are assigned to some 12 numbers
-->execstr(M + '=' + string(1:size(M,2)));   
-->evstr(Ms)
 ans  =
    12.    4.   
    2.     12.  
    6.     7.  

This different approach will be much slower than using grep for very large input matrices.
However, it is worth knowing about it because execstr is one of the most powerful Scilab functions (see for instance the Meta programming chapter in: “Programming in Scilab”, by Michael Baudin, September 2011).

Regards,
Rafael

From: users [mailto:users-bounces at lists.scilab.org] On Behalf Of Mike Page
Sent: Thursday, October 20, 2016 1:32 PM
To: Users mailing list for Scilab <users at lists.scilab.org>
Subject: Re: [Scilab-users] Converting string months to month numbers

Hi Jens,
grep does something like what you want.

-->[r,w]=grep(Ms,M);
-->matrix(w,size(Ms))
 ans  =
 
    12.    4.   
    2.     12.  
    6.     7.   
 
Not sure why grep produces a vector when searching for a matrix, but it seems that way.
HTH,
Mike.

On 20 October 2016 at 10:32, Jens Simon Strom <mailto:j.s.strom at hslmg.de> wrote:
Hallo,
Given the string vector 

M=['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec']
which implicitly maps the string representation of the months to their number representataion I would like to map any string matrix containing elements of M into a numercal matrix showing the month numbers.
E. g. 
Ms=['Dec','Apr';'Feb','Dec';'Jun','Jul']
should be converted to
Mn=[12,4;2,12;6,7].

Ho can that be done in a vectorial style?

Backward (given Mn) it is easier to me:
Ms=matrix(M(Mn),size(Mn))

Regards
Jens





More information about the users mailing list