我正在使用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崩溃