墨西哥人编辑代码函数支持64位的索引万博1manbetx

7视图(30天)
嘿,
我想加快我的代码通过使用一个墨西哥人功能,我已经做了但基坑支护是MatLab编码器只支持32位索引和当函数输入到达大,MatLab崩溃。万博1manbetx
我已经尝试:
但这并不帮助我因为这个话题是关于当一个矩阵,需要改变什么超过32位墨西哥人函数创建索引。
在我的例子中生成的矩阵是在MatLab和给墨西哥人功能,这使一些输出。相同的矩阵可以改变其大小在MatLab和它返回给墨西哥人重复功能。
我写了一些最低限度的工作代码illustrade问题:
num = 46340;
flashymatrixname = false (num);
flashymatrixname (1: num + 1) = true;
flashyarrayname = 1 (num, 1);
flashyconstname = 1;
长度(flashyarrayname) < 46342
[flashyarrayname2] = testfunction1 (flashymatrixname, flashyarrayname flashyconstname);
flashymatrixname (+ 1,:) = false;
flashymatrixname(:,结束+ 1)= false;
flashymatrixname(结束,结束)= true;
flashyarrayname结束(+ 1)= 1;
结束
函数[flashyarrayname2] = testfunction1 (flashymatrixname、flashyarrayname flashyconstname)
flashyarrayname2 =南(长度(flashyarrayname), 1);
parfori = 1:长度(flashyarrayname)
tempvar1 = flashyarrayname (flashymatrixname(:,我));
tempvar2 = flashyarrayname(我);
[flashyarrayname2 (i)] = testfunction2 (tempvar1、tempvar2 flashyconstname);
结束
结束
函数[some_value] = testfunction2 (tempvar1、tempvar2 flashyconstname)
some_value = flashyconstname * (1 / tempvar2 - 1. / tempvar1);
结束
我generted墨西哥人与MatLab函数形式testfunction1编码器,它再现了这个错误。
我比codegen搜索所有文件/墨西哥人/ testfunction1文件夹和子文件夹的矩阵和数组的名字根据上面的链接。
问题是我不能找到矩阵大小是显式声明我可以改变它,必须以某种方式由matlab给出大小。coder_test_api。cpp如下声明:
静态空白emlrt_marshallIn (const emlrtStack * sp, const mxArray * flashymatrixname, const char_T *标识符,编码器::数组< boolean_T 2 u > y)
所以的大小限制在32位索引和我需要改变这是不知何故overgiven“* flashymatrixname”,我不知道如何改变它,因为链接的方法取代Int_32 mwsize并不适用,因为它没有宣布。
也许有人可以帮助我。它还将在什么样的蜜蜂重要文件我需要t取代这样的声明,我想我应该只改变它的程序员创建的文件,而不是在其他文件,编码器需要还,像一些图书馆头左右....
非常感谢,
致以最亲切的问候
2的评论
Marc到来
Marc到来 2021年1月17日
我唯一用于编译bibraries mathutil emlrt,正确理解你,我需要这些库基于64位的,否则我的计划失败这一点了吗?人写64位墨西哥人功能没有编码器使用这些库而不是自己的编码器用于MatLabroot extern \ \ lib \版本?
开放的墨西哥人议员给出了加速的20 - 30倍。我会试着块有问题的布尔矩阵成碎片,每一个可转位与32位,希望分块并不比墨西哥人花费更多的时间给我。

登录置评。

答案(0)

s manbetx 845


释放

R2020b

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!