将 Matlab 转换为 Python
Posted
技术标签:
【中文标题】将 Matlab 转换为 Python【英文标题】:Convert Matlab to Python 【发布时间】:2020-02-15 20:05:38 【问题描述】:我正在将matlab代码转换为python,我对以下代码行有很大的疑问:
BD_teste = [BD_teste; grupos.(['g',int2str(l)]).('elementos')(ind_element,:),l];
整个代码是这样的:
BD_teste = [];
por_treino = 0;
for l = 1:k
quant_elementos_t = int64((length(grupos.(['g',int2str(l)]).('elementos')) * por_treino)/100);
for element_c = 1 : quant_elementos_t
ind_element = randi([1 length(grupos.(['g',int2str(l)]).('elementos'))]);
BD_teste = [BD_teste; grupos.(['g',int2str(l)]).('elementos')(ind_element,:),l];
grupos.(['g',int2str(l)]).('elementos')(ind_element,:) = [];
end
end
下面这行代码是一个结构,当我转换为 python 时,我使用了一个列表,在其中使用了一个字典,其列表为 'elementos':
'g',int2str(l)]).('elementos')
所以我的问题就在我上面引用的那一行,我想知道发生了什么以及它是如何发生的,以及我将如何用 python 编写。
非常感谢您。
【问题讨论】:
我正在写一个答案,但作为一般建议,避免将变量命名为l
,它很容易与1
混淆。
【参考方案1】:
BD_teste = [BD_teste; grupos.(['g',int2str(l)]).('elementos')(ind_element,:),l];
是一条非常奇怪的线。让我们把它分解成碎片:
int2str(l)
将数字 l
作为 char 数组返回(从 '1'
到 k)。
['g',int2str(l)]
返回 char 数组 g1
,然后是 g2
等等以及 l
的值。
grupos.(['g',int2str(l)])
将返回属于结构体grupos
的名为g1
、g2
等的字段的值。
grupos.(['g',int2str(l)]).('elementos')
现在假设grupos.(['g',int2str(l)])
本身是一个结构,并返回其名为“elementos”的字段的值。
grupos.(['g',int2str(l)]).('elementos')(ind_element,:)
假设grupos.(['g',int2str(l)])
是一个矩阵,此行返回一个包含所述矩阵的第ind_element
行的行向量。
grupos.(['g',int2str(l)]).('elementos')(ind_element,:),l
将数字一附加到之前获得的向量中。
[BD_teste; grupos.(['g',int2str(l)]).('elementos')(ind_element,:),l]
将线向量[grupos.(['g',int2str(l)]).('elementos')(ind_element,:),l]
附加到矩阵BD_teste
的底部。并创建一个新矩阵。
最后:
BD_teste = [BD_teste; grupos.(['g',int2str(l)]).('elementos')(ind_element,:),l];``assignes the value of the obtained matrix to the variable
BD_teste`,覆盖其先前的值。实际上,这只是追加新行,但由于覆盖步骤,它不是很有效。
建议附加:
BD_teste(end+1,:) = [grupos.(['g',int2str(l)]).('elementos')(ind_element,:),l];
现在,您将如何在 Python 中重写它是一个完全不同的故事,主要取决于您希望如何定义变量 grupos
。
【讨论】:
以上是关于将 Matlab 转换为 Python的主要内容,如果未能解决你的问题,请参考以下文章
使用 MATLAB 试用版将 MATLAB GUI 转换为 .exe