首页 > 解决方案 > 在 Matlab simulink 中使用 C++ 库 (clibgen)

问题描述

我使用 clibgen.generateLibraryDefinition 为 C++ 库生成 Matlab 接口。我将它应用到 Matlab 函数中,效果很好。但是,当我尝试在带有 Matlab 功能块的 Matlab Simulink 中使用它时,它给出了错误“尝试从 'mxArray' 中提取字段 'i'。”这是我在 Simulink 中添加的任何内容吗?谢谢! 在此处输入图像描述

function cube  = fcn(size_x, size_y, range_x_min, range_x_max, ...
                    range_y_min, range_y_max, power, ...
                    transmitter_height, receiver_height, ...
                    transmitter_position, frequency)
coder.extrinsic('clib.Wave.Wave.EMWave');
coder.extrinsic('clib.Wave.Wave.Index');
coder.extrinsic('clib.Wave.Wave.Vec2d');
coder.extrinsic('clib.Wave.Wave.Terrain');
coder.extrinsic('clib.Wave.Wave.Transimtter');
coder.extrinsic('clib.Wave.Wave.Source');
coder.extrinsic('clib.Wave.Wave.Cube');
coder.extrinsic('clib.Wave.Wave.Terrain');
coder.extrinsic('clib.Wave.Wave.Ray');
index = clib.Wave.Wave.Index;
radio_wave = clib.Wave.Wave.EMWave;
terrain = clib.Wave.Wave.Terrain(200,200,range_x_min,range_y_min,range_x_max,range_y_max);
index.i = 1;
index.j = 1;
% radio_wave.transmitter.set_power(1000);
% radio_wave.transmitter.set_height(150.0);
% radio_wave.transmitter.set_number_of_discrete_rays(7200);
%code.varsize('cube',[1 size_x],[1 size_y]);
cube = zeros(200,200);
end

标签: c++matlabsimulink

解决方案


推荐阅读