У меня есть вложенная структура с некоторыми полями, помеченными как L1
, L2
и т.д. Я пытаюсь получить доступ к подструктуре внутри структуры, используя следующий код.
lfield = lfidcalc(le);
substruct = bmstruct.(lfield);
Поскольку le
изменяет свое значение на каждой итерации, lfield
также изменяет свое значение с L1
на L9
.
Однако, когда я пытаюсь создать этот код для создания исполняемого файла C++, я получаю следующую ошибку.
Непостоянное выражение или пустая матрица. Это выражение должно быть постоянным, поскольку его значение определяет размер или класс некоторого выражения. В этом контексте значение строки должно быть известно.
Может ли кто-нибудь попытаться помочь мне разобраться в этой проблеме?
Я не уверен, что именно вызывает сообщение об ошибке, но в любом случае MATLAB Coder не поддерживает доступ к полям структуры с использованием имен динамических полей.
Возможно, это прямая причина того, что вы видите, возможно, нет: но в любом случае у вас есть проблема.
Не все правильные коды Matlab могут быть преобразованы в C/C++. Особенно этот (очень удобный) код. Вы положили '% # eml' во вторую строку своей функции? Это означает, что вы будете генерировать код. На веб-сайте Matlab: "Мы используем директиву% # eml, чтобы включить анализатор кода MATLAB M-Lint и проверить код функции на наличие ошибок и рекомендовать исправления".
%#codegen
который будет использоваться для этой цели: mathworks.com/help/fixedpoint/ug/… . Какая разница между ними?