我试图从python 2.7脚本调用matlab函数。我正在使用Matlab引擎进行Python(Matlab Engine From Mathwork)。但似乎很慢。我的python代码的最后一行(下面的检查片段)需要5分钟,但是当我直接在matlab中运行时,相同的matlab函数只需0.5分钟。
当我调用这个matlab函数时,它需要4.5分钟才能执行第一行matlab代码。我无法理解。我在网上查了一下,发现一般情况下,大部分时间都是启动matlab引擎,但在我的情况下,启动matlab引擎只需要9秒。
import matlab.engine
eng = matlab.engine.start_matlab()
X = eng.load('Original_Image_mat.mat')
noisy=eng.addnoise(X['image'], 1.35, 4.0, 1.0, 3.5, 2.0, 2)
当变量 X 的大小从100 mb增加到400 mb时,此问题会变得更糟。然后它需要1/2小时才能执行第一行matlab代码,但是当我直接在matlab中运行时只需要2分钟。
有人能解释一下为什么它很慢吗?
这是我的matlab函数(不能发布完整的函数,所以只发布部分内容)
function [ noisy ] = addnoise( vol, angpix, res, falloff, lowpass, padfactor, seed )
rng(seed); % initialize random numbers
volft = fftshift(fftn(vol)); % get volume FFT
volftabs = abs(volft);
s = size(vol, 1);
[x, y, z] = ndgrid(-s/2:s/2-1, -s/2:s/2-1, -s/2:s/2-1);
r = sqrt(x.^2 + y.^2 + z.^2); % get distance of each voxel from center
rround = round(r);