猿问

如何将Python数组转换为MATLAB可读数组?

我在 MATLAB 中有一个函数,它需要四个输入


function f = calculate_mat(F,M,a,b). 

这里 F 和 M 是多维数组,“a”和“b”是常数项。


现在我必须在 python 脚本中调用这个函数,在其中给出所有上述输入值。


import matlab.engine

import numpy as np 


# c, a, b are constants

c = 100 

a = 30 

b = 0.2

freal = np.arange(0,30000,10) # real frequency range

fimag = np.arange(0,200,1) # imaginary frequency range 

F = np.zeros((3000,200))

M = np.zeros((3000,200))

for i in range(len(freal)):

    for j in range(len(fimag)):

        F = freal[i] + fimag[j]

        omega = 2 * np.pi * F[i][j]

        kx = omega / c # wave number 

        M[i][j] = np.abs(kx)


eng = matlab.engine.start_matlab()

fst = eng.calculate_mat(F, M, a,b)

但 python 脚本抛出错误:“TypeError: unsupported Python data type: numpy.ndarray”


我知道这是因为 Matlab 无法读取 numpy 数组格式。


如何将 numpy 数组转换为 matlab 可读数组?任何例子都会有帮助。


慕仙森
浏览 115回答 1
1回答

Qyouu

您无法使用 numpy 数组调用 matlab 函数。您必须将 numpy 数组转换为 matlab 矩阵:fst = eng.calculate_mat(matlab.double(F.tolist(), is_complex=True), matlab.double(M.tolist(), is_complex=True), a, b)
随时随地看视频慕课网APP

相关分类

Python
我要回答