Ошибка сборки кодировщика Matlab при попытке доступа к структурам

0

У меня есть вложенная структура с некоторыми полями, помеченными как L1, L2 и т.д. Я пытаюсь получить доступ к подструктуре внутри структуры, используя следующий код.

lfield = lfidcalc(le);
substruct = bmstruct.(lfield);

Поскольку le изменяет свое значение на каждой итерации, lfield также изменяет свое значение с L1 на L9.

Однако, когда я пытаюсь создать этот код для создания исполняемого файла C++, я получаю следующую ошибку.

Непостоянное выражение или пустая матрица. Это выражение должно быть постоянным, поскольку его значение определяет размер или класс некоторого выражения. В этом контексте значение строки должно быть известно.

Может ли кто-нибудь попытаться помочь мне разобраться в этой проблеме?

Теги:

2 ответа

1
Лучший ответ

Я не уверен, что именно вызывает сообщение об ошибке, но в любом случае MATLAB Coder не поддерживает доступ к полям структуры с использованием имен динамических полей.

Возможно, это прямая причина того, что вы видите, возможно, нет: но в любом случае у вас есть проблема.

0

Не все правильные коды Matlab могут быть преобразованы в C/C++. Особенно этот (очень удобный) код. Вы положили '% # eml' во вторую строку своей функции? Это означает, что вы будете генерировать код. На веб-сайте Matlab: "Мы используем директиву% # eml, чтобы включить анализатор кода MATLAB M-Lint и проверить код функции на наличие ошибок и рекомендовать исправления".

  • 0
    Я помню %#codegen который будет использоваться для этой цели: mathworks.com/help/fixedpoint/ug/… . Какая разница между ними?
  • 0
    Я думаю, что% # codegen новее и лучше на самом деле.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню