我在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']
但它没有用。我收到此错误,这只是一个常规的python keyerror
。
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
KeyError: 'f'
但是如果f
不是符号矩阵,则此代码可以正常工作。有关如何使用符号变量处理这些矩阵的任何想法吗?
答案 0 :(得分:1)
Scipy无法加载MATLAB符号变量。
处理问题的最好方法是将符号矩阵转换为字符矩阵(不是matlab字符串,因为它也会引起错误)
这就是我的意思:
在MATLAB中,您可以执行以下操作:
syms x
f = [x^2 x^3 x^4];
for i = 1:numel(f)
if i == 1
f2 = char(f(i));
else
f2 = [f2 ',' char(f(i))];
end
end
save('sym.mat','f2')
这将显示:
x^2,x^3,x^4
现在,在python中,您可以执行以下操作:
import scipy.io as sio
path = 'H:\MatlabScripts'
matrix = sio.loadmat(path + '\sym.mat')
sym = matrix['f2'][0].split(',')
print(sym)
结果将是:
['x^2', 'x^3', 'x^4']