I'm trying to translate this MATLAB code to Python:
MATLAB: V_c = delta* max(V_L, repmat(V_A_c,[N_p 1]) - NM )
where these are 4D arrays:
V_c
is the continuation value for in different states, (should have shape 81, 75, 15, 31)
V_L
is the initial value, (has shapes 81, 75, 15, 31)
V_A_c
is the value of adjustment under optimal choice (has shape 1, 75, 15, 31)
NM
is a number (NM = κ*np.exp(P0)
)
N_p
is the length of the grid
This is my attempted python code
PYTHON: V_c = delta * np.amax(V_L,(np.tile(V_A_c,(([N_p,1]))))-NM)
I get errors, that the lengths of the arrays are different, and that only integer scalar arrays can be converted to a scalar index.
In Python, my V_L
and V_A_c
has the same values and shapes as the MATLAB gives, but I still can't compute V_c. Any suggestions?
CodePudding user response:
The error you mention, comes from the fact that you want to element-wise compare two tensor (matrix). use np.maximum.
considering the tile operation is correct and N_p is 85 in you example:
V_c = delta * np.maximum(V_L, np.tile(V_A_c,(N_p,1,1,1)) - NM )
CodePudding user response:
You can't. You must write it. Even you use converter, you will not reach the exact code. So, try to understand the code and write in python.