Bonjour,

J'ai créé des fonctions Matlab Embarqué dans simulink dans lesquelles je voudrais utiliser des fonctions que j'ai créé dans des M-file.

J'ai enregistré mes fonctions dans un dossier de mon répertoire de travail :
\MatlabFunctions\strToNum.m

Pour l'instant dans ma fonction embarquée matlab, j'ai essayé de la déclarée avec :
coder.extrinsic('strToNum');
ou
coder.extrinsic('MatlabFunctions\strToNum');

mais dans les 2 cas il me génère une erreur :
Undefined function or variable 'coder'.

Function 'getAllContentsNum' (#18.172.177), line 6, column 1:
"coder"
Ma fonction matlab embarqué est la suivante :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
function contentNum = getAllContentsNum(list, sessionIds)
 
% Retourne toutes les valeurs associées aux ids passés dans le tableau sessionIds au format (1, 10, 'double')
%
 
coder.extrinsic('MatlabFunctions\getContent');
coder.extrinsic('MatlabFunctions\strToNum');
 
contentStr = zeros(1, 256, 'uint8');
contentNum = zeros(1, 10, 'double');
 
for i=1:10
    contentStr = getContent(list, sessionIds(i));
    contentNum(i) = strToNum(contentStr);
end
et la fonction que j'appel :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
function num = strToNum(str)
 
%Retourne la valeur numérique d'une String au format uint8
%
 
val = zeros(1,10,'double');
pow = zeros(1,10,'double');
num = double(0);
total = max(size(char(str)));
i = 1;
j= total;
while i<=total && j>1
    val(i) = getNum(str(i));
    i = i+1;
    j = j-1;
end
for i=1:total
    num = num + (val(i) * pow(i));
end
 
% Retourne la valeur numérique(double) d'un chiffre ASCII(uint8) compris entre 0 et 9 
function num = getNum(chr)
ascii = [48:1:57];
num = double(0);
for i=1:10  
    if ascii(i) == uint8(chr)
        num = double(i);
    end
end
Est ce que quelqu'un peu m'aider sachant que le but final est de générer une dll avec mon code simulink et que ma version matlab est R2007b.

Merci d'avance