我有一个python代码,我用numpy来做一些计算。
在我的代码中,我有一些整数变量'N'用作索引。在
然后我使用scipy.io.savemat在我的Matlab(2017a)代码中使用这个索引,在执行类似操作时会出现以下错误:% N is the int variable I have from my python code
>> N
N =
int64
1792
>> (1:2)/N
Error using /
Integers can only be combined with integers of the same class, or scalar doubles.
显然,Matlab的“原生整数”属于“double”类。我的意思是:
^{pr2}$
如果我在matlab代码中指定了'N',我就不会在执行上述代码时遇到问题。但我在python中指定变量,然后将它们转换成matlab。尝试使用双倍的在python代码中for'N'会导致numpy警告,例如:>>> N = numpy.double(100)
>>> numpy.zeros(N)
VisibleDeprecationWarning: using a non-integer number instead of an integer will result in an error in the future
总而言之,我想在python代码中使用'N'作为整数,然后在matlab代码中用作double(或其他类似于原生matlab整数的函数)。
我原以为savemat会为我做这种转换,但可能因为其他一些好的原因,它没有
显而易见的解决方案是在序列化之前或之后将整数转换为double。但由于我有一个包含许多不同变量的大字典,这就需要跟踪每个变量的类型,这是我非常希望避免的。我在寻找一个简单的更“本土”的解决方案。在
你建议如何解决这件事?谢谢