只給你一些背景:如何翻譯Python 3中的MATLAB單元格?
我有一些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