将 Matlab 代码转换为 Python

Convert Matlab codes to Python

提问人:Farideh 提问时间:8/15/2022 最后编辑:Karl KnechtelFarideh 更新时间:9/13/2022 访问量:192

问:

我必须将我朋友的一些小代码从 Matlab 转换为 Python,我试图在 Matlab 中找到“assign”单词的良好翻译,但不幸的是没有答案。 你能帮我在Matlab中完成这段代码并将其翻译成Python吗,我特别卡在最后一行。感谢您的帮助

function importfile1(fileToRead1)

%IMPORTFILE1(FILETOREAD1)%  Imports data from the specified file %  FILETOREAD1:  file to read % Import the file

newData1 = load('-mat', fileToRead1);

% Create new variables in the base workspace from those fields.

vars = fieldnames(newData1);
for i = 1:length(vars)
    assignin('base', vars{i}, newData1.(vars{i}));
end
python 赋值运算符

评论

4赞 Cris Luengo 8/16/2022
Python 没有等效项。但即使在MATLAB中,这也是不好的做法。
0赞 Ander Biguri 8/16/2022
是的,这是可怕的MATLAB代码。别这样。
0赞 dmedine 8/16/2022
使用怎么样?=
0赞 Farideh 8/17/2022
@Cris Luengo ,Ander Biguri 你能告诉我更多,为什么它听起来不好吗?正如我的教授所说,将其他一些像这样的 Matlab 代码转换/翻译成 Python。-dmedine,你能告诉我更多才能完整地写出来吗?谢谢
0赞 Karl Knechtel 9/13/2022
由于需要更多关注,代码翻译请求通常偏离主题。请使用完整的英语句子来解释 Python 代码运行时会发生什么

答:

1赞 Aaron 8/16/2022 #1

我同意这样的评论,即这有点不好的做法,而且两者有很大的不同,这并不完全有意义,但我们可以尝试最好的模拟。Python 不使用相同的“工作区”术语(有些东西可能不会整齐地交叉),但从文档来看,它似乎主要用于通过访问范围(全局)或其他函数范围来为当前不在范围内的变量分配值。在 python 中,您可以(在函数中)指示要使用带有关键字的变量的全局版本,然后像往常一样为其分配一个值:then .如果在封闭作用域中同时具有全局版本和同名版本,并且想要访问更高一级(但不一定是全局作用域),则改用关键字 nonlocalassignin"base"globalglobal myvarmyvar = "some_value"

这个函数做的另一件事是允许你以编程方式创建变量名,这通常被认为是不好的做法,因为你的变量名通常应该是固定的,而不是变量本身。在这种情况下,代码似乎正在复制从交互式会话中保存所有变量的功能,然后稍后在新的交互式会话中重新加载它们。在这种情况下,没有“变量变量”的一般智慧不太适用,并且确实比“变量变量”的一般解决方案(字典(或其他数据结构)更有意义。以编程方式创建新变量的实际解决方案是函数,由于许多原因,通常避免使用函数,但特别是与来自实时编码会话的信息进行交互可能是合适的。在这种情况下,您将构建一个表示相应 python 表达式的字符串,例如:eval

eval(str(vars[i]) + "=" + str(newData1[vars[i]]))

*请注意,您将不得不花一些时间来弄清楚如何确保构建正确的表达式,因为这是一个非常粗略的例子。eval