使用MATLAB为外部Thorlabs库创建2D阵列

时间:2017-07-10 16:32:58

标签: arrays matlab 2d

我正在使用MATLAB来控制Thorlabs软件。我在导入的库中需要返回数组的任何函数都遇到问题。以下是我使用的代码示例和手册中的说明:我的代码:

waveType=libpointer('int32Ptr',0)
pupil=libpointer('int32Ptr',1)
arraywavefront=zeros(spotsy.value,spotsx.value,'uint16');
calllib('WFS_64','WFS_CalcWavefront',hdl.value,waveType,pupil, arraywavefront);

我对pupil和waveType的语法非常有信心,因为这些参数在其他函数中有效但我在使用arraywavefront语法时遇到了问题。当我在调用这个函数后查看arraywavefront时,它仍然是一个全零的2D数组。我也尝试过:

array=zeros(spotsy.value,spotsx.value);
arraywavefront=libpointer('doublePtr',array)

给了我错误:

  

使用calllib时出错,Array必须是数字或逻辑

对于上下文,以下是库中的参数:

WFS_CalcWavefront(instrumenthandle, ViInt32 waveType, ViInt32 pupil, float arrayWavefront[]);
for the arrayWavefront parameter:
float[], this parameter returns a 2D array of float containing the data

会喜欢任何建议!

编辑:手册进一步指出arraywavefront的类型应该是singlePtr(相当于C中的float *),但是每当我尝试将arraywavefront作为singlePtr进行投射时,MATLAB崩溃

0 个答案:

没有答案