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 :
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
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 :
Quand je lance le programme simuler(testSB, Ktab), j'ai le message d'erreur suivant :
Si je déclare Ktab dans le script :
J'ai le message suivant :
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
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
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
Partager