Attempt to extract field 'iterations' from 'mxArray'

Hello! I need help. My problem is in Title. I use codegen for translate .m-code in mex.
[xopt,zmin,exitflag,output,lambda] = linprog(C1,A,B,[],[],LB1,[],[],options);
fprintf(1,Out1,xopt,zmin);
fprintf(1,'ExitFlag= %d\nIterats= %d\n',exitflag,output.iterations);
How can I solve this problem?

 採用された回答

Grek Vardugin
Grek Vardugin 2018 年 11 月 11 日

0 投票

I solve it. First, I created a new structure with fields that exist in the output structure.
output = struct('iterations', 0, 'constrviolation', 0, 'message', '', 'algorithm', '', 'firstorderopt', 0);
Then I added the coder.varsize function for text fields.
coder.varsize('output.message', [1,100]);
coder.varsize('output.algorithm', [1,100]);
After
[xopt,zmin,exitflag,output,lambda] = linprog(C,A,B,Aeq,Beq,lb,ub,[],options);
fprintf(1,Out1,xopt,zmin);
fprintf(1,'\nExitFlag = %d\nIterats = %d\n',exitflag,num2str(output.iterations));

その他の回答 (1 件)

Joh Hag
Joh Hag 2018 年 10 月 26 日

0 投票

hi, is output a struct? the mxArray is just the bare data and does not have such a field. have you tried to put the value in a separate variable such num_iterations = output.iterations? and then use this one in the fprintf command. this could help codegen to sort things out.

3 件のコメント

Grek Vardugin
Grek Vardugin 2018 年 10 月 26 日
Hi, Jon! Thank you for your answer! Yes, output is a struct, where output.iterations is integer type. My goal is to execute the linprog function and write some of its results to a file. In this case, write output.iterations.
Joh Hag
Joh Hag 2018 年 10 月 26 日
Did you try the trick with the temporary variable? where does the compilation actually fail? at the fprintf's or when you call linprog?
Grek Vardugin
Grek Vardugin 2018 年 10 月 26 日
Compilation failed then I use fprintf. If I use the disp function instead of fprintf, I get a similar error.

サインインしてコメントする。

製品

リリース

R2015b

質問済み:

2018 年 10 月 26 日

回答済み:

2018 年 11 月 11 日

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by