matlab怎么检索错误在哪,c – 使用engGetVariable在MATLAB R2014a中检索结构时出错

#include

#include "engine.h"

using namespace std;

int main(){

cout << "Start" << endl;

Engine *ep;

//Loading Matlab Version R2014a

if (!(ep = engOpen("/usr/local/MATLAB/R2014a/bin/matlab"))) {

cout << "\nCan't start MATLAB engine\n";

return 1;

}

engEvalString( ep, "load('error.mat')" );

// PHOTOSS_TEMP3 is a struct

mxArray *K = engGetVariable(ep, "PHOTOSS_TEMP3");

if(K !=NULL)

cout << "Loading variable was successful" << endl;

cout << "End";

return 0;

}

通过这个示例C程序,我试图用MATLAB读取一个结构.但程序冻结在一起mxArray * K = engGetVariable(ep,“PHOTOSS_TEMP3”);我收到错误信息:

Error using save

Can't write file stdio.

这也是makefile:

g++ -I/usr/local/MATLAB/R2014a/extern/include -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"matlab_error.d" -MT"matlab_error.d" -o "matlab_error.o" "matlab_error.cpp"

g++ -Wl,-rpath,/usr/local/MATLAB/R2014a/bin/glnxa64 -L/usr/local/MATLAB/R2014a/bin/glnxa64 -Xlinker -rpath-link -Xlinker /usr/local/MATLAB/R2014a/bin/glnx64 -o "matlab_error" matlab_error.o -leng -lmx

以及MATLAB文件的“whos”:

Name Size Bytes Class Attributes

Custom_Parameters 0x0 0 double global

MultiSignal 1x1 83110 struct

PHOTOSS_TEMP1 1x1 8 double

PHOTOSS_TEMP3 1x1 8210 struct

Results 0x0 0 double global

alpha 1x1 8 double global

beta2 1x1 8 double global

current_block_no 1x1 8 double

fiber_length 1x1 8 double global

main_parameters 1x1 4644 struct global

message 0x0 0 char global

simulation_parameters 1x1 4644 struct

当我使用MATLAB版本的R2014a Linux时,只会出现此错误.我试过版本2013a / b,它工作正常.当我尝试读取像main_parameters或MultiSignal这样的示例文件的另一个结构时,也会发生这种情况.

那我的错误在哪里?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值