Array limit for matlab coder

1 回表示 (過去 30 日間)
Martin Andersson
Martin Andersson 2023 年 4 月 16 日
編集済み: Martin Andersson 2023 年 4 月 16 日
Hi,
I'm using matlab coder to speed up time. However, I have an array which in normal matlab becomes ArrayLarge: 31x1x441, 109368 double.
But when I use coder and compile a mex file, my Matlab craches. With the Mex file I have generated I can genrate the same array but only up to aboute ArrayLarge: 31x1x246, 61008 double, before it crashes.
But how can I compile an mex file which can create the ArrayLarge: 31x1x441, 109368 double, which is generated with the regular matlab code. Is it some settings in the MatLab coder which I can change? (It is not memory problem for the comuter as the coputer enables to create the ArrayLarge on original MatLab 2022a).

採用された回答

Walter Roberson
Walter Roberson 2023 年 4 月 16 日
I suspect that you are reaching the stack size limit.
If you are generating for real-time work, then you would need to increase the stack size limit.
If you are not generating for real-time work, then enable dynamic memory allocation for the array; https://www.mathworks.com/help/coder/ug/minimize-dynamic-memory-allocation.html
  3 件のコメント
Walter Roberson
Walter Roberson 2023 年 4 月 16 日
ArrayLarge = zeros(31, 1, 441);
numel(ArrayLarge)
ans = 13671
whos ArrayLarge
Name Size Bytes Class Attributes ArrayLarge 31x1x441 109368 double
So the 109368 is already bytes, not number of elements.
Martin Andersson
Martin Andersson 2023 年 4 月 16 日
編集済み: Martin Andersson 2023 年 4 月 16 日
Thank you!

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

その他の回答 (0 件)

製品


リリース

R2022a

Community Treasure Hunt

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

Start Hunting!

Translated by