pappu
pappu

Reputation: 137

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.

Upvotes: 1

Views: 5605

Answers (2)

Rob Volgman
Rob Volgman

Reputation: 2114

Converting from letter to number: ord("a") = 97

Converting from number to letter: chr(97) = 'a'

(You can subtract 96 to get the result you're looking for for lowercase, or 64 for uppercase.)

Parse a string to int: int("523") = 523

Comparing strings (Case sensitive): "Hello"=="Hello" = True

Case insensitive: "Hello".lower() == "hElLo".lower() = True

ones(): [1]*ARRAY_SIZE

Identity matrix: [[int(x==y) for x in range(5)] for y in range(5)]

To make 2-D arrays, you need to use numpy.

Edit:

Alternatively, you can make a 5x5 2-D array like so: [[1 for x in range(5)] for y in range(5)]

Upvotes: 2

mgilson
mgilson

Reputation: 309891

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

Upvotes: 3

Related Questions