Просто чтобы дать вам некоторый контекст:Как перевести ячейку MATLAB в Python 3?
я должен перевести некоторые MATLAB код на Python 3 один, но здесь я столкнулся с небольшой проблемой.
Matlab:
for i in 1:num_nodes
for j in 1:num_nodes
K{i,j} = zeros(3,3);
который я перевел на:
k_topology = [[]]
for i in range(x):
for i in range(x):
k_topology[[i][j]].extend(np.zeros(3,3))
Кроме того, далее в коде Matlab есть третья петля:
for k in 1:3
K{i,j}(k,k) = -1
Который также вид .. Расстраивает меня?
Дело в том, что я действительно не вижу, как я могу перевести эту переменную в Python. Кроме того, я думаю, что мой код Python «сломан» - , и я не прошу никого из вас улучшить его. -, поэтому я просто спрашиваю , что является лучшим способом перевести ячейку Matlab в Python ?
я, наконец, нашел что-то, по-видимому просто перевести это, используя список понимание - согласно ответу kazemakase в. Реальный код Python теперь выглядит как это:
k_topology = [[np.zeros((3,3)) for j in range(self.get_nb_nodes_from_network())]\
for i in range(self.get_nb_nodes_from_network())]
И похоже, что-то вроде этого в выход:
[[array([[ 0., 0., 0.],
[ 0., 0., 0.],
[ 0., 0., 0.]]),
array([[ 0., 0., 0.],
[ 0., 0., 0.],
[ 0., 0., 0.]]),
array([[ 0., 0., 0.],
[ 0., 0., 0.],
[ 0., 0., 0.]])], ..., [array(...)]]
(Там действительно слишком много значений, чтобы вставить его здесь, но я думаю, что вы его получили .)
Может ли он помочь описать, что делает этот код Matlab, и почему вы считаете, что его будет сложно перевести. – Carcigenicate
Ну, матрица K предназначена для представления топологии электрической сети. Таким образом, он будет содержать другие матрицы длиной от 1 до 3 макс. Насколько мне известно, я могу понять первый цикл (тот, у кого есть K {i, j}), но второй кажется мне странным: что такое K {i, j} (k, k)?Как я могу его перевести? Вот почему мне сложно: я просто не понимаю, что – Alastard
Итак, 'K' является двумерным? В чем же разница между «k_topology» и «K»? – Carcigenicate