Dans mon code j'ai une variable "e" qui est calculée pour chaque fichier *.XYZ qui est loadé, donc le calcul est une boucle qui se répète à chaque fichier XYZ.
J'aimerais appliquer une correction à la variable "e" (ajouter une valeur numérique. exemple: +0.33).
Mais cette correction (que l'on va nommer "R") dépend du nom du fichier qui est loadé (donc R varie selon le fichier chargé au départ de la boucle).
Je voudrais associer une valeur à "R" en fonction de si il y a, oui ou non, tel bou de texte dans le nom du fichier. C'est en fait une condition classique "if"...
Maintenant je voudrais savoir si c'est possible avec matlab d'analyser (scan) le nom du fichier et de déceler les mots clés (parmi les mots clés préalablement définis dans les conditions if) permettant de choisir quel valeur R il faut appliquer.
exemple:
P221_beton_brut_et32
P32_beton_rect_34
PE_pvc_th33
P432_bois_233
PIL44_simili_4344
dans les conditions:
si ...
"str_actuel" contient "*brut*", alors "R" = 0.331
"str_actuel" contient "*rectif*", alors "R" = 0.331
"str_actuel" contient "*pvc*", alors "R" = 0.111
"str_actuel" contient "*bois*", alors "R" = 0.031
"str_actuel" contient "*simili*", alors "R" = 0.021
"str_actuel" contient "*brut*", alors "R" = 0.551
ensuite me restera plus qu'à corriger ma valeur "e" : "e_corrige" = "e" + R
merci d'avance pour votre aide !
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
30 %boucle qui permet de traiter chaque fichier un après l'autre %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% for k = 1:length(str) str_actuel = str(k).name; str_eval = ['load ', str_actuel]; eval(str_eval); %Calculs %%%%%%%%% P1 = data.plan(1,1:3); P2 = data.plan(1,4:6); P3 = data.plan(1,7:9); H = str_actuel; % 1)Calculer le vecteur normal: N = cross(P1-P2, P1-P3); % 2)Extraire les valeurs a, b et c a=N(1,1) ; b=N(1,2) ; c=N(1,3); % 3)Calculer la valeur d d = -(a*P1(1,1)+b*P1(1,2)+c*P1(1,3)); % 4)Calculer la distance/ecart entre le point H et le plan P [P1,P2,P3] e = ((a*H(:,1)+b*H(:,2)+c*H(:,3)+d))/sqrt(a^2+b^2+c^2); end![]()
Partager