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

trapz-Funktion in Simulink

 

justy
Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 12.12.21
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 12.12.2021, 14:48     Titel: trapz-Funktion in Simulink
  Antworten mit Zitat      
Ich würde gerne die trapz-Funktion in meinem Simulink-Modell nutzen, in einem "Matlab Function"-Block. Der Block hat zwei Input-Siganle, soll das eine Signal über das andere integrieren und das Ergebnis als Output herausgeben.

Damit die funktion trapz als trapz(X,Y) ausgeführt wird (und nicht beispielsweise als trapz(Y, dim)), habe ich nur diesen Teil der Funktion in den "Matlab Function"-Block kopiert.

die Input-Signale sind je nach Simulationslaufzeit z.B. 12000x1 Arrays, die mit der Laufzeit größer werden.

Leider habe ich bisher nur 0 als Lösung bekommen und auch viel Ausprobieren und Fehlermeldungen beheben hat nicht zu einer guten Lösung geführt.
Wenn ich die Funktion in Matlab ausführe, funktioniert sie einwandfrei, nur in Simulink während der Laufzeit funktioniert es nicht.

Hat jemand eine Idee?
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.428
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 12.12.2021, 17:00     Titel:
  Antworten mit Zitat      
Hallo,

bitte hänge ein Beispielmodell an. So ist es am einfachsten, das Problem nachzuvollziehen.

Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
justy
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 12.12.21
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 12.12.2021, 23:04     Titel:
  Antworten mit Zitat      
Ich habe mal den Teil des Modells, bei dem ich nicht weiterkomme, einzeln dargestellt. Im Matlab-Skript funktioniert die funktion und errechnet einen Wert, im simulink-Modell leider nicht.

Viele Grüße

trapez_test_modell.mdl
 Beschreibung:

Download
 Dateiname:  trapez_test_modell.mdl
 Dateigröße:  79.59 KB
 Heruntergeladen:  196 mal
trapez_test.m
 Beschreibung:

Download
 Dateiname:  trapez_test.m
 Dateigröße:  419 Bytes
 Heruntergeladen:  166 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.428
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 13.12.2021, 11:00     Titel:
  Antworten mit Zitat      
Hallo,

mit welchem Release ist das denn erstellt?
Ich bekomme in R2021b die Fehlermeldung "Invalid ConsecutiveZCsStepRelTol specified in the Configuration Parameters dialog".

Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
justy
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 12.12.21
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 13.12.2021, 11:31     Titel:
  Antworten mit Zitat      
Hallo,

ich benutze auch das R2021b Release. Ich habe mir die beiden Dateien nochmal runtergeladen und ausgeführt und bekomme keine Fehlermeldung.
Ich habe zuerst das Modell ausgeführt, um die Werte in den Arrays im Workspace zu haben und dann das .m-File ausgeführt.

Vielleicht hast du andere Konfigurations-Parameter? Ich habe einen Screenshot von meinen angehängt (Solver).

Viele Grüße!

screenshot_matlab.PNG
 Beschreibung:

Download
 Dateiname:  screenshot_matlab.PNG
 Dateigröße:  60.38 KB
 Heruntergeladen:  159 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.428
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 13.12.2021, 11:46     Titel:
  Antworten mit Zitat      
Hallo,

ich habe mal Nullstellenerkennung deaktiviert. So kann ich das Problem nachvollziehen. Das Problem scheint mir, dass du in jedem Schritt immer nur einen Wert in die Funktion bekommst. Das siehst du, wenn du einen Haltepunkt setzt. Du müsstest also mit Vektorsignalen arbeiten.

Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
justy
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 12.12.21
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 13.12.2021, 20:42     Titel:
  Antworten mit Zitat      
Hi,

ja, genau das ist das Problem Sad Habe heute nochmal vieles probiert, MUX, Deserializer, concatenate...aber nichts will funktionieren...
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.428
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 14.12.2021, 08:57     Titel:
  Antworten mit Zitat      
Hallo,

vielleicht nochmal einen Schritt zurück: was möchtest du erreichen?
a) Soll in jedem Zeitschritt ein (eventuell komplett neues) vektorielles Signal integriert und das Ergebnis ausgegeben werden? Dann muss in der Tat sichergestellt werden, dass diese Signale zu jedem Zeitschritt zur Verfügung stehen.
b) Soll ein großer Vektor schrittweise diskret oder kontinuierlich integriert werden, beispielsweise um aus einer Geschwindigkeit eine Beschleunigung zu machen? Dann würde ich statt deines Ansatzes einen Unit Delay bzw. Integrator Block verwenden.

Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
justy
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 12.12.21
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 14.12.2021, 10:25     Titel:
  Antworten mit Zitat      
Hallo,

ich möchte, dass jede Halbwelle des y-Signals über den entsprechenden Bereich des x-Signals integriert wird.

In meinem Modell wird die Arbeit berechnet, indem ich die Kraft (y-Signal) über den Weg (x-Signal) integriere.

Ich wollte die y/x-Werte der einen Halbwelle sammeln und dann mit der trapz-funktion integrieren.

Viele Grüße
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.