Bonsoir,
j'ai un petit script (Matlab 2019b) qui permet de faire varier un paramètre pour voir son influence.
Je ne vois pas ce qui bloque.
J'ai essayé une première version en déclarant la variable Ktab dans matlab :
Pièce jointe 579643Code:
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 %Cette fonction permet de simuler un diagramme Simulink en faisant varier un %paramètre K %Pour pouvoir l'utiliser il faut : % - Déclarer une variable globale K dans Matlab (Syntaxe : global K) % - Déclarer les valeurs de K à simuler dans Matlab (Syntaxe : Ktab = [5 10 % 13]) (Maxi 24 valeurs) % - Remplacer une constante par K dans le diagramme Simulink % - Configurer le scope du diagramme Simulink (Menu Parameters/Data % history/Save Data to Workspace / Structure with time) % - Lancer la commande Matlab suivante : simuler( 'Nom du fichier % Simulink',Ktab ) function simuler(nom_fichier, Ktab) hold on ; %Permet de superposer les courbes global K ; %Permet de piloter la variable K de simulink colors = {'blue', 'green', 'red', 'cyan', 'magenta','black','blue', 'green', 'red', 'cyan', 'magenta','black'}; for i = 1:length(Ktab) K = Ktab(i); sim(nom_fichier); %Lance la simulation avec K(i) Scope(i) = ScopeData ; %Sauvegarde les résultats de Simulink de la structure ScopeData dans un tableau if(i<7) plot(Scope(i).time, Scope(i).signals.values, 'color', colors{i},'DisplayName',sprintf('K = %d', K) ) ; %trace en trait fort else plot(Scope(i).time, Scope(i).signals.values, 'color', colors{i},'DisplayName',sprintf('K = %d', K) , 'LineWidth',2,'LineStyle',':') ; %trace en pointillés end end legend('show'); %Affiche la légende hold off ; end
Le schéma est le suivant :
Pièce jointe 579644
Quand je lance le programme simuler(testSB, Ktab), j'ai le message d'erreur suivant :
Pièce jointe 579645
Si je déclare Ktab dans le script :
J'ai le message suivant :Code:
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 %Cette fonction permet de simuler un diagramme Simulink en faisant varier un %paramètre K %Pour pouvoir l'utiliser il faut : % - Déclarer une variable globale K dans Matlab (Syntaxe : global K) % - Déclarer les valeurs de K à simuler dans Matlab (Syntaxe : Ktab = [5 10 % 13]) (Maxi 24 valeurs) % - Remplacer une constante par K dans le diagramme Simulink % - Configurer le scope du diagramme Simulink (Menu Parameters/Data % history/Save Data to Workspace / Structure with time) % - Lancer la commande Matlab suivante : simuler( 'Nom du fichier % Simulink',Ktab ) function simuler(nom_fichier, Ktab) hold on ; %Permet de superposer les courbes global K ; %Permet de piloter la variable K de simulink Ktab = [1 5 10] ; colors = {'blue', 'green', 'red', 'cyan', 'magenta','black','blue', 'green', 'red', 'cyan', 'magenta','black'}; for i = 1:length(Ktab) K = Ktab(i); sim(nom_fichier); %Lance la simulation avec K(i) Scope(i) = ScopeData ; %Sauvegarde les résultats de Simulink de la structure ScopeData dans un tableau if(i<7) plot(Scope(i).time, Scope(i).signals.values, 'color', colors{i},'DisplayName',sprintf('K = %d', K) ) ; %trace en trait fort else plot(Scope(i).time, Scope(i).signals.values, 'color', colors{i},'DisplayName',sprintf('K = %d', K) , 'LineWidth',2,'LineStyle',':') ; %trace en pointillés end end legend('show'); %Affiche la légende hold off ; end
Pièce jointe 579646
Je n'ai pas trop d'idées. Je suis "débutant" en programmation.
Si certains ont des idées, je suis preneur ...
Merci d'avance
Sébastien
PS : Modèles en PJ