WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Wie Ausgabe eines Vektors aus einer S-Function

 

bolle123
Forum-Newbie

Forum-Newbie


Beiträge: 3
Anmeldedatum: 31.08.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 31.08.2010, 10:07     Titel: Wie Ausgabe eines Vektors aus einer S-Function
  Antworten mit Zitat      
Hallo zusammen,

ich habe eine S-Function mit mehreren Berechnungen - soweit ja noch kein Problem.

Jetzt möchte ich allerdings in dieser S-Function in jedem Zeitschritt einen Vektor berechnen - mir erstmal egal ob die Größe des Vektors dynamisch angepasst werden kann oder eine feste Größe (z.B. 100 Einträge) hat.

Mein bisheriger Ansatz enstpricht dem des "Mathworks Documentation->Simulink ssGetOutputPortSignal":

"mdlOutput":
int *test_vektor = (int *)ssGetOutputPortSignal(S,5);
for (j = 0; j < 100; j++)
{
test_vektor[j] = vorher_berechneter_vektor[j];
}

und in "mdlInitializeSizes":
ssSetOutputPortVectorDimension(S, 5, 100);

Mal funktioniert es so, mal gibt es irgendwelche Fehler und Matlab beendet sich selbsttätig...mal stürzt Matlab auch ab wenn man sich die Ausgabe in Simulink in einem Scope ansehen will....

Für denn Fall, dass es funktioniert, stellt sich bei der Betrachtung im Workspace nach einem "simout-Block" dann das nächste Problem: Jeder zweite Eintrag in dem Vektor ist eine Null...

Anhand des Fehlerbildes vermute ich einfach mal, dass meine Lösung maximal eine "Frickellösung" ist, aber nicht wirklich funktioniert...

Könnt ihr mir helfen? Also wie gebe ich einen Vektor aus einer S-Function aus?

Vielen Dank im Voraus.

Schöne Grüße
Private Nachricht senden Benutzer-Profile anzeigen


bolle123
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 3
Anmeldedatum: 31.08.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 02.09.2010, 10:04     Titel:
  Antworten mit Zitat      
Hallo zusammen,

die Ausgabe funktioniert jetzt, jedoch hab ich nicht so ganz verstanden warum bzw. wie: Question

Wenn ich mit der folgenden Vorschleife den Vektor befüllen möchte, werden nicht entsprechend der Schleife 21 Einträge sonder 42 Einträge des Vektors belegt....

Code:

for (int k = 0; k <= 20; k++)
{
    test_output[k] = 2*k+1;
}  
 


Und zwar sieht der Vektor dann wie folgt aus:

"1,0,3,0,5,0,7,0,9,...,41,0"

Woher kommen die "0"-Einträge?

Ich hoffe, ihr könnt mir da was erklären... Smile Question

Schönen Gruß
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum posten
Du kannst Dateien in diesem Forum herunterladen
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2024 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.