Hauptinhalt

set_param

Einstellen eines Simulink-Parameterwerts

Beschreibung

set_param(object,parameter1,value1,...,parameterN,valueN) setzt den angegebenen Simulink®-Parameter parameter auf den angegebenen Wert value für das durch object angegebene Zielobjekt. Das Zielobjekt kann ein Modell, ein Subsystem, eine Bibliothek, ein Block, eine Zeile, ein Port oder ein Bus-Element-Port-Element sein.

Um mehrere Parameterwerte für das Zielobjekt festzulegen, rufen Sie die Funktion set_param einmal mit mehreren Name-Wert-Argumenten auf, anstatt die Funktion für jeden Parameter einzeln aufzurufen. Das Festlegen mehrerer Parameter mit einem einzigen Funktionsaufruf ist effizient, da die Parameter bei einem Aufruf nur einmal ausgewertet werden. Wenn Parameternamen oder -werte ungültig sind, werden von der Funktion keine Parameter festgelegt.

Beispiel

Beispiele

alle reduzieren

Sie können den Wert eines Blockparameters mithilfe der Funktion set_param mit diesen Eingabeargumenten festlegen:

  • Block-Handle oder vollständiger Blockpfad einschließlich Blockname, 'myModel/mySubsystem/myblock'

  • Parametername

  • Neuer Wert, den Sie dem Parameter zuweisen möchten

Weitere Informationen zu Block-Handles und -pfaden finden Sie unter Get Handles and Paths. Ein Beispiel dafür, wie Sie den Blockpfad erhalten, finden Sie unter Get Block Paths.

Informationen dazu, wie Sie die Parameternamen erhalten, finden Sie unter Get Block Parameter Names.

In diesem Beispiel legen Sie die Koeffizienten der Übertragungsfunktion fest, die durch einen Übertragungsfunktionsblock mit der Bezeichnung Alpha-sensor Low-pass Filter angegeben wird.

  • Der Block befindet sich im Subsystem Controller des Modells slexAircraftExample.

  • Die Koeffizienten des Zählers der Übertragungsfunktion sind im Parameter Numerator gespeichert. Die Koeffizienten des Nenners der Übertragungsfunktion sind im Parameter Denominator gespeichert.

  • Der neue Wert, den Sie dem Zähler zuweisen möchten, ist 1.2. Der neue Wert, den Sie dem Nenner zuweisen möchten, ist [0.8*Tal,1], wobei Tal eine Variable ist.

Öffnen Sie das Beispiel. Laden Sie daraufhin das Modell slexAircraftExample.

mdl = 'slexAircraftExample';
load_system(mdl)

Legen Sie die Koeffizienten der Übertragungsfunktion fest.

path = [mdl,'/Controller/Alpha-sensor Low-pass Filter'];
set_param(path,'Numerator','1.2','Denominator','[0.8*Tal,1]');

Verwenden Sie die Funktion get_param, um die Werte der Parameter Numerator und Denominator zu überprüfen.

num = get_param(path,'Numerator')
num = 
'1.2'
denom = get_param(path,'Denominator')
denom = 
'[0.8*Tal,1]'

Wenn der Blockpfad lang ist und Sie mehrere Parameter festlegen möchten, sollten Sie die Verwendung von Block-Handles in Betracht ziehen.

Sie können den Wert eines Blockparameters mithilfe der Funktion set_param mit diesen Eingabeargumenten festlegen:

  • Block-Handle oder vollständiger Blockpfad einschließlich Blockname, 'myModel/mySubsystem/myblock'

  • Parametername

  • Neuer Wert, den Sie dem Parameter zuweisen möchten

Informationen darüber, wie Sie den Blockpfad erhalten, finden Sie unter Get Block Paths.

Informationen dazu, wie Sie die Parameternamen erhalten, finden Sie unter Get Block Parameter Names.

In diesem Beispiel legen Sie die Koeffizienten der Übertragungsfunktion fest, die durch einen Übertragungsfunktionsblock mit der Bezeichnung Alpha-sensor Low-pass Filter angegeben wird.

  • Der Block befindet sich im Subsystem Controller des Modells slexAircraftExample.

  • Die Koeffizienten des Zählers der Übertragungsfunktion sind im Parameter Numerator gespeichert. Die Koeffizienten des Nenners der Übertragungsfunktion sind im Parameter Denominator gespeichert.

  • Der neue Wert, den Sie dem Zähler zuweisen möchten, ist 1.2. Der neue Wert, den Sie dem Nenner zuweisen möchten, ist [0.8*Tal,1], wobei Tal eine Variable ist.

Öffnen Sie das Beispiel. Rufen Sie dann den Block-Handle mit der Funktion getSimulinkBlockHandle ab. Um gleichzeitig den Block-Handle zu erhalten und das Modell zu laden, geben Sie das zweite Argument für die Funktion getSimulinkBlockHandle als true an.

path = 'slexAircraftExample/Controller/Alpha-sensor Low-pass Filter';
h = getSimulinkBlockHandle(path,true)
h = 
465.0011

Um die Parameterwerte festzulegen, geben Sie den Block mithilfe des Handles an. Der Handle enthält ein Double. Versuchen Sie nicht, die Nummer eines Handles manuell einzugeben, da Sie möglicherweise mehr Ziffern angeben müssen, als MATLAB® anzeigt. Weisen Sie stattdessen den Handle einer Variablen zu und verwenden Sie den Variablennamen, um den Block anzugeben.

set_param(h,'Numerator','1.2','Denominator','[0.8*Tal,1]');

Sie können den Wert eines Modellparameters mithilfe der Funktion set_param mit diesen Eingabeargumenten festlegen:

  • Modellname

  • Parametername

  • Neuer Wert, den Sie dem Parameter zuweisen möchten

Informationen darüber, wie Sie Modellparameternamen erhalten, finden Sie unter Get Model Parameter Names.

Öffnen Sie das Beispiel. Laden Sie daraufhin das Modell f14.

load_system('f14')

Stellen Sie den Solver des Modells f14 auf ode15s und die Stoppzeit auf 3000 Sekunden ein.

set_param('f14','Solver','ode15s','StopTime','3000')

Verwenden Sie die Funktion Solver, um die Werte der Parameter StopTime und get_param zu überprüfen.

solver = get_param('f14','Solver')
solver = 
'ode15s'
stoptime = get_param('f14','StopTime')
stoptime = 
'3000'

Öffnen Sie das Beispiel. Öffnen Sie dann das f14-Modell.

open_system('f14')

Erfassen Sie den Handle des Signalgeneratorblocks mit dem Namen Pilot.

h = getSimulinkBlockHandle('f14/Pilot');

Ermitteln Sie die Position des Blocks.

pos = get_param(h,'Position')
pos = 1×4

    15    18    55    42

Die Funktion gibt die Blockposition zurück, die als Vektor von Koordinaten in Pixeln angegeben wird: [left top right bottom].

Verschieben Sie den Block nach rechts.

pos = [pos(1)+20 pos(2) pos(3)+20 pos(4)];
set_param(h,'Position',pos);

Verschieben Sie den Block nach oben.

pos = [pos(1) pos(2)-20 pos(3) pos(4)-20];
set_param(h,'Position',pos);

Ziehen Sie den Block horizontal auseinander.

pos = [pos(1)/4 pos(2) pos(3) pos(4)];
set_param(h,'Position',pos);

Öffnen Sie das Beispiel. Öffnen Sie dann das f14-Modell.

open_system('f14')

Das Modell verfügt über einen Signalgeneratorblock mit der Bezeichnung Pilot. Verschieben Sie den Blocknamen an den Anfang des Blocks.

set_param('f14/Pilot','NameLocation','top')

Eingabeargumente

alle reduzieren

Name, Pfad oder Handle des Objekts, angegeben als Zeichenvektor, String-Skalar oder numerischer Skalar.

Wie Sie das Zielobjekt angeben, hängt von dessen Typ ab.

  • Modell – Name oder Handle des Modells.

  • Subsystem – Name oder Handle des Subsystems.

  • Bibliothek – Name oder Handle der Bibliothek.

  • Block – Pfad oder Handle des Blocks.

  • Zeile – Handle der Zeile.

  • Port – Handle des Ports.

  • Portelement – Pfad, der aus dem Modellnamen oder dem Subsystem-Blockpfad, einem Schrägstrich und dem Portnamen oder dem Bus-Element-Pfad besteht. Bei einem Bus-Element-Port stellt der Bus-Element-Pfad die Hierarchie vom Bus der obersten Ebene zum Zielelement dar, wobei jeder Name in der Hierarchie durch einen Punkt getrennt wird.

Informationen dazu, wie Sie Handles und Pfade erhalten, finden Sie unter Get Handles and Paths. Um mehrere Objekte mit einem gemeinsamen Parameter zu spezifizieren, verwenden Sie ein Zellenfeld aus Zeichenvektoren, ein String-Array oder ein Array von Handles. Alle angegebenen Objekte müssen den angegebenen Parameter haben, andernfalls gibt die Funktion einen Fehler zurück.

Beispiel: 'vdp/Mu'

Beispiel: 'mymodel/Subsystem1/Out1.nonsinusoidal.saw'

Tipps

  • Wenn Sie mehrere Anrufe an set_param für denselben Block senden, geben Sie den Block mit einem numerischen Handle an. Diese Methode ist effizienter als die Verwendung des vollständigen Blockpfads mit set_param. Verwenden Sie getSimulinkBlockHandle, um einen Block-Handle zu erhalten.

  • Versuchen Sie nicht, die Nummer eines Handles manuell anzugeben, z. B. 5.007, da Sie in der Regel mehr Ziffern angeben müssen, als MATLAB® anzeigt. Weisen Sie den Handle einer Variablen zu und verwenden Sie diesen Variablennamen.

Datentypen: char | string | double

Parameter-, Eigenschafts- oder Attributname, angegeben als Zeichenvektor oder String-Skalar. Bei einigen Namen wird zwischen Groß- und Kleinschreibung unterschieden.

Informationen zu Parametern, Eigenschaften oder Attributen finden Sie in den Informationen zur programmgesteuerten Verwendung auf den entsprechenden Referenzseiten. Beispiel:

Um alle Parameter eines Zielobjekts zu erhalten, verwenden Sie die Funktion get_param mit der Option 'ObjectParameters'. Einige der zurückgegebenen Parameter sind möglicherweise nur für den internen Gebrauch bestimmt.

Beispiel: 'Solver'

Beispiel: 'SimulationCommand'

Beispiel: 'Position'

Beispiel: 'NameLocation'

Datentypen: char | string

Parameterwert, angegeben in dem durch den Parametertyp festgelegten Format. Bei einigen Parametern wird zwischen Groß- und Kleinschreibung unterschieden. Werte sind oft Vektoren oder Skalare, können aber auch numerische Skalare, Arrays und andere Typen sein.

Viele Blockparameterwerte werden als Zeichenvektoren oder String-Skalare angegeben. Zwei Ausnahmen sind Position, das als Vektor angegeben ist, und UserData, das ein beliebiger Datentyp sein kann.

Einschränkungen

  • Wenn Sie matlab -nodisplay verwenden, um eine Sitzung zu starten, können Sie set_param nicht verwenden, um eine Simulation auszuführen. Der -nodisplay-Modus unterstützt keine Simulation mit set_param. Verwenden Sie stattdessen die sim-Funktion.

  • Wenn Sie die Funktion set_param verwenden, um einen Block oder ein Signal umzubenennen, sind diese Namen nicht gültig: leere Namen, Namen, die nur Zeilenumbrüche enthalten, und Namen, die mit / beginnen oder enden.

Tipps

Nachdem Sie die Parameter im MATLAB-Workspace festgelegt haben, aktualisieren Sie das Diagramm, um die Änderungen in einem Modell zu sehen.

set_param(model,'SimulationCommand','Update')

Versionsverlauf

Eingeführt vor R2006a