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

2024-09-30 10:30:50 发布

您现在位置:Python中文网/ 问答频道 /正文

我在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:不支持的python数据类型:numpy.ndarray”

我理解这是因为Matlab不能读取numpy数组格式

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


Tags: 函数importnumpy脚本nprange数组engine
1条回答
网友
1楼 · 发布于 2024-09-30 10:30:50

不能使用numpy数组调用matlab函数。必须将numpy数组转换为matlab矩阵:

fst = eng.calculate_mat(matlab.double(F.tolist(), is_complex=True), matlab.double(M.tolist(), is_complex=True), a, b)

相关问题 更多 >

    热门问题