c – 如何避免重复初始化.mex(matlab编译代码)?
发布时间:2020-12-16 06:57:24 所属栏目:百科 来源:网络整理
导读:我有Matlab代码调用从c代码生成的MEX. c代码在初始化时需要大量内存分配和计算. 使用静态指针,仅在第一次调用时进行初始化,并在后续调用中读取指针. 在使用Matlab编译器编译Matlab代码之前,一切正常.现在随后对MEX的调用(现在在matlab编译的代码中发生)最终
我有Matlab代码调用从c代码生成的MEX.
c代码在初始化时需要大量内存分配和计算. 使用静态指针,仅在第一次调用时进行初始化,并在后续调用中读取指针. 在使用Matlab编译器编译Matlab代码之前,一切正常.现在随后对MEX的调用(现在在matlab编译的代码中发生)最终崩溃,因为静态指针显然引用了无效的内存. 在这种情况下,可以采取哪些措施来避免重复初始化? 谢谢, 解决方法
好问题.您可能必须将其分解为两个不同的mex函数,一个用于计算初始化并返回其结果,另一个用于执行函数.
[heavyCompResults,otherHeavyResults] = initComputation(initParams); 然后: performComputation(compParams,heavyCompResults,otherHeavyResults); 或者,您可以在文件中写出内容,而不是通过Matlab传递它. initComputation(initParams,initResultsFname); %writes initResultsFname 然后: performComputation(compParams,initResultsFname); %reads initResultsFname 还有一个选择: 将您的代码转换为DLL并使用 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容