Ошибка с командой mex -g (без оптимизации)

Я пытаюсь изменить файл в сценарии. Файл C, который должен быть mexed, генерируется на одном из предыдущих шагов сценария перед тем, как он будет mexed.

Когда я использую строку ниже в сценарии, все работает нормально, и сценарий выполняется успешно.

mex (strcat(component_name,'_s_func','.c'));

но когда я добавляю ту же строку ниже с

mex -g (strcat(component_name,'_s_func','.c'));

это дает мне ошибку

C:\PROGRA~2\MATLAB~1\BIN\MEX.PL: Ошибка: '(strcat(имя_компонента,_s_func,.c))' не найдено.

Любая идея, почему не удается найти тот же файл при использовании -g в то время как он может найти его при использовании без -g вариант?

2 ответа

Решение

Проблема с вашим утверждением в том, что с синтаксисом

mex -g [...]

MATLAB предполагает, что вы звоните mex со строковыми аргументами '-g' а также '[...]' так что предполагается, что ваш файл называется (strcat(component_name,'_s_func','.c')) и не выполняет команду.

Вы можете использовать решение, которое вы разместили с evalтак как вы снова называете это строками '-g' а также 'filename.c', Другой возможностью было бы использовать синтаксис

mex('-g',strcat(component_name,'_s_func','.c'));

потому что команда strcat действительно выполняется перед вызовом mex,

-

Это такое же поведение, как, например, с clear, Как вы, возможно, знаете, следующие утверждения равны:

clear a b c
clear('a','b','c');

Хорошо, это можно сделать с помощью команды eval

file_name=(strcat(component_name,'_s_func','.c'));
eval(['mex -g ',file_name]);
Другие вопросы по тегам