2014-08-27 4 views
0

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

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

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

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

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

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

ответ

1

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

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

0

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

+0

Я помню '% # codegen', который будет использоваться для этой цели: http://www.mathworks.com/help/fixedpoint/ug/adding-the-compilation-directive-codegen.html. Любая разница между ними? – Daniel

+0

Я думаю, что% # codegen новее и лучше на самом деле. –

+0

@Sam Roberts. Да, я узнал об этом позже. Теперь я должен использовать статические имена полей, используя случай переключения. – suranga

Смежные вопросы