Bonjour tout le monde,
j'ai fais un programme matlab mais je voudrais le "convertir" en VBA pour pouvoir l'utiliser sous excel (car il n'y a pas matlab à mon stage).
Je ne connais pas du tout VBA et je voudrais savoir si il est possible que vous me donnier les fonctions equivalentes à celles que j'ai écris ci dessous en langage matlab.
Le principale probleme est je pense le lancement du solveur d'excel... :euh:
Merci d'avance
Voici mon main:
Voici la fonction erreur:
Code matlab : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 beta1=5; %on definit les paramètres initiaux à tester beta2=4; vecteurDeBeta=[beta1 beta2]; %%%%%%%%%%%%%%%%%%%%%%%%% %je lance ma fonction qui me permet d'avoir l'erreur à minimiser MonErreurAminimiser=erreur(vecteurDeBeta); %%%%%%%%%%%%%%%%%%%%%%%%% %on lance une optimisation pour avoir les paramètres optimisés, c'est à dire ceux %qui minimisent l'erreur vecteurDeParametreOptimises=solveur(vecteurDeBeta,@erreur(vecteurDeBeta),1e-6); %je donne au solveur les parametres initiaux, un pointeur vers la fonction qui %calcul l'erreur, et enfin la limite en dessous de laquelle je veux que l'erreur se trouve
Code matlab : 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
31
32
33
34
35
36
37
38 function MonErreurAminimiser=erreur(vecteurDeBeta) delete('1990.csv'); % on efface le fichier 1990.csv du repertoire %on va remplacer les paramères du fichier beta.inp par ceux ci delete('beta.inp'); %on supprime le fichier beta existant %on réécrit un nouveau inp où il y aura nos paramètres à tester fichierBeta = fopen('beta.inp','wt'); %on écrit trois ligne avec beta=valeur de notre parametre à écrire fprintf(fichierBeta,'beta=%g\n'), vecteurDeBeta(1)); fprintf(fichierBeta,'beta=%g\n'), vecteurDeBeta(2)); fclose(fichierBeta);%on a fini on ferme le fichier %on lance notre calcul dos('ansys=dynamique.inp'); %on attend l'écriture du fichier résultat f=which('1990.csv'); %cherche le fichier .csv ds le repertoire while isempty(f) %temps que variable f est vide on continue à attendre f=which('1990.csv'); %regarder si le fichier est apparu end; %si le fichier est apparu on sort de la boucle %------------- %on recupére les données expérimentales qui se trouve dans excel ToutesColonnesExp = load('experimental.xls'); %je choisie la 2eme colonne et toute ses lignes donneesExp = ToutesColonnesExp(:,2); %je recupére les données du calcul ToutesColonnesNum = load('1990.csv'); %je concerve que la onzieme colonne de la ligne 2 à la dernière donneesNum = ToutesColonnesExp(2:end,11); %------------- %je calcul l'erreur entre les 2 colonnes, pour cela je fais une boucle sur %toutes les lignes et je soustrais les résultats expérimentaux aux Num erreur=0; for i=1:1:length(donneesExp) erreur=erreur+(donneesExp(i)-donneesNum(i))*(donneesExp(i)-donneesNum(i)); end %------------ MonErreurAminimise=erreur; end
j'espere que vous pourrez m'aidez...![]()
Partager