Attempt to extract field 'iterations' from 'mxArray'

9 ビュー (過去 30 日間)
Grek Vardugin
Grek Vardugin 2018 年 10 月 26 日
回答済み: Grek Vardugin 2018 年 11 月 11 日
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 日
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 日
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 件のコメント
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

Community Treasure Hunt

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

Start Hunting!

Translated by