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

2 vues (au cours des 30 derniers jours)
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 ":"

Réponses (1)

James Tursa
James Tursa le 14 Déc 2016
What happens if you use explicit indexes?
V(1:n,1) = (1/beta)*w;
  2 commentaires
Mads
Mads le 15 Déc 2016
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 le 15 Déc 2016
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...

Connectez-vous pour commenter.

Catégories

En savoir plus sur Testing Frameworks dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by