Subscripting into an mxArray is not supported for code generation - I think it's the colon that's the issue

1 次查看(过去 30 天)
This part of my code
V = zeros(n,m+1);
V(:,1) = (1/beta)*w;
is giving me an error "Subscripting into an mxArray is not supported for code generation", when I use MATLAB Coder to create a Mex file. But if I can't fill V that way and so forth what is the correct way to do it? Other places I get "Unexpected MATLAB operator" and the MATLAB Coder points me to the ":"

回答(1 个)

James Tursa
James Tursa 2016-12-14
What happens if you use explicit indexes?
V(1:n,1) = (1/beta)*w;
  2 个评论
Mads
Mads 2016-12-15
Apparently, it is not the issue after all. I did a test earlier in the code:
test= rand(5,1);
test2 = zeros(5,2);
test2(:,1) = test;
test2(1:5,2) = 2*test;
and it passes, so basically, the original error is misleading. So there is a main function and a subfunction. And things start to go wrong from the point where I call the subfunction in which the original error was, although, I conduct the same test in the subfunction and it passes. So I'm left without a clue. I worry there is one error leading to other errors...
Mads
Mads 2016-12-15
I finally managed to locate the seeding error of all other errors. I'm disappointed by the fact that I was not allowed to use spdiags() even though I made it extrinsic ("coder.extrinsic('spdiags')"). This has resulted in a workaround that finally has made the MEX slower than the native matlab script because I at some point am forced to use non-sparse matrices...

请先登录,再进行评论。

类别

Help CenterFile Exchange 中查找有关 Matrices and Arrays 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by