将 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 的名为g1g2 等的字段的值。

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 variableBD_teste`,覆盖其先前的值。实际上,这只是追加新行,但由于覆盖步骤,它不是很有效。

建议附加: BD_teste(end+1,:) = [grupos.(['g',int2str(l)]).('elementos')(ind_element,:),l];

现在,您将如何在 Python 中重写它是一个完全不同的故事,主要取决于您希望如何定义变量 grupos

【讨论】:

以上是关于将 Matlab 转换为 Python的主要内容,如果未能解决你的问题,请参考以下文章

将视频转换为单张图片(灰度)【MATLAB】

使用 MATLAB 试用版将 MATLAB GUI 转换为 .exe

将 MATLAB 代码转换为库

如何将结构从 Matlab 代码转换为 C 代码(使用 Matlab 编译器)

用matlab将索引图像转换为RGB图像

将 Matlab 数组转换为元胞数组