Why do I get a size mismatch error during code generation but not during regular MATLAB execution?

8 vues (au cours des 30 derniers jours)
I have the following MATLAB function:
function example()
x = [1 2 3];
y = [1 2 3; 4 5 6; 7 8 9];
z = x+y;
When I run it by executing the following in MATLAB Command Window:
example()
I receive no error.
But, if I perform code generation either using the MATLAB Coder app or "codegen", I received the following error: ERROR: Size mismatch (size [1 x 3] ~= size [3 x 3])

Réponse acceptée

MathWorks Support Team
MathWorks Support Team le 21 Jan 2019
The reason you see the error is because implicit expansion is not supported by code generation. As a workaround, you may consider using the "bsxfun".
For example, this line of code
z = x+y;
uses implicit expansion where the variable "y" is expanded to the same size as "x" before the sum is implemented by MATLAB. However, implicit expansion is not supported by code generation, and thus, you receive an error. Instead, as a possible workaround, you may consider this line of code
z = bsxfun(@plus,y,x);
where "bsxfun" explicitly sums each slice of "x" with "y".
For more details about the "bsxfun" function, you can refer to this page:
For a complete list of code generation supported features, you can refer to this page:

Plus de réponses (0)

Catégories

En savoir plus sur MATLAB Coder dans Help Center et File Exchange

Produits


Version

R2017b

Community Treasure Hunt

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

Start Hunting!

Translated by