【发布时间】:2018-04-08 01:46:57
【问题描述】:
我在 MATLAB 中有一个带有符号变量的矩阵,如下所示:
syms x
f = [x^2 x^3 x^4];
save ('sym.mat','f')
因此我将f 矩阵保存为sym.mat。现在我想将此矩阵导入python。所以我尝试了这个:
import scipy.io as sio
matrix = sio.loadmat('sym.mat')
sym = matrix['f']
但它没有用。我得到了这个错误,这只是一个普通的pythonkeyerror。
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
KeyError: 'f'
但是,如果 f 不是符号矩阵,则此代码可以正常工作。有什么想法可以用符号变量处理这些矩阵吗?
【问题讨论】:
-
matrix的keys是什么?让我们了解loadmat返回的内容。我的猜测是 MATLAB 保存了一个无法转换为numpy结构的类和/或函数。我在以前的 SO 问题中看到了有关 MATLAB 函数和日期的问题。 -
我从其他帖子中看到您已经知道
sympy。numpy和scipy没有任何符号功能,因此loadmat无法返回 MATLAB 等效项,即使它“理解”syms。你能做的最好的就是在sympy中重新创建它们。