pythonmatlabnumpyscipyporting

matlab to python code conversion


I am trying to convert a matlab code to python due to lack of matlab. I will be grateful if you kindly tell me the python equivalents of the following functions which I could not find:

letter2number_map('A') = 1;
number2letter_map(1) = 'A';
str2num()

strcmp()
trace()
eye()
getenv('STRING')

[MI_true, ~, ~] = function() What does ~ mean?
mslice
ones()

Thank you very much for your kind assistance.


Solution

  • I don't actually know matlab, but I can answer some of those (assuming you have numpy imported as np):

    letter2number_map('A') = 1;  -> equivalent to a dictionary:  {'A':1}    
    number2letter_map(1) = 'A';  -> equivalent to a dictionary:  {1:'A'}
    
    str2num() -> maybe float(), although a look at the docs makes 
                 it look more like eval -- Yuck. 
                 (ast.literal_eval might be closest)
    strcmp()  -> I assume a simple string comparison works here.  
                 e.g. strcmp(a,b) -> a == b
    trace()   -> np.trace()    #sum of the diagonal
    eye()     -> np.eye()      #identity matrix (all zeros, but 1's on diagonal)
    getenv('STRING')  -> os.environ['STRING'] (with os imported of course)
    [MI_true, ~, ~] = function() -> Probably:  MI_true,_,_ = function()  
                                    although the underscores could be any  
                                    variable name you wanted. 
                                    (Thanks Amro for providing this one)
    mslice    -> ??? (can't even find documentation for that one)
    ones()    -> np.ones()     #matrix/array of all 1's