|
|
Formeln aus einer Klasse ansprechen |
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.499
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 03.12.2014, 18:42
Titel:
|
 |
Hallo,
heute+1 kannst du durch einen beliebigen Endzeitpunkt ersetzen.
Allerdings geht es nie bis 24:00, sondern nach 23:59 kommt 00:00. Das ist m.E. aber so korrekt.
Grüße,
Harald
|
|
|
|
|
Osterwma |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 38
|
 |
|
 |
Anmeldedatum: 01.12.14
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 08.12.2014, 17:28
Titel:
|
 |
Hi Harald,
vielen Dank für die Antwort.
Da ich jetzt mit unterschiedlichen Daten-Typen rechne, bekomme ich die Fehlermeldung: Undefined function 'minus' for
input arguments of type 'cell'.
Folgendes will ich machen:
Lasse ich das "cellstr" weg, bekomme ich eine nicht brauchbare Matrix mit 5 Spalten raus...
Wie kann ich den Daten-Typ verändern bzw. von vornherein so einstellen, dass die Rechnung durchläuft?
Vielen Dank & einen schönen Abend
Martin
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.499
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 08.12.2014, 21:28
Titel:
|
 |
Hallo,
verwendest du schon R2014b?
Die neuen datetime und duration-Objekte dürften dir da sehr weiterhelfen.
Grüße,
Harald
|
|
|
Osterwma |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 38
|
 |
|
 |
Anmeldedatum: 01.12.14
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 08.12.2014, 22:08
Titel:
|
 |
Hi,
leider nicht, bin noch mit der 2013ner Version unterwegs
Grüße
Martin
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.499
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 09.12.2014, 16:23
Titel:
|
 |
Hallo,
dann wird dir nichts anderes übrig bleiben, als für Berechnungen das datenum-Format zu verwenden und für die Darstellen das datestr-Format, und bei Bedarf zwischen beiden hin- und her zu konvertieren.
Grüße,
Harald
|
|
|
Osterwma |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 38
|
 |
|
 |
Anmeldedatum: 01.12.14
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 16.12.2014, 17:27
Titel:
|
 |
Hi Harald,
hab das jetzt soweit hinbekommen.
Nur eine if else Funktion bereitet mir noch Schwierigkeiten...
TCT ist ein Vektor der von -0.4137 bis 23.00 hochläuft.
Solange TCT kleiner als das Limit = 12 ist, soll die "if" function ausgeführt werden. Alles darüber mit "else"
Aktuell wird aber immer "else" ausgeführt.
Kannst du mir sagen, wo der Fehler stecken könnte? Gerne kann ich auch nochmal den gesamten Code hochladen, falls nötig...
Vielen Dank & Grüße
Martin
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.499
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 16.12.2014, 21:20
Titel:
|
 |
Hallo,
wenn TCT ein Vektor ist, dann heißt
dass alle Elemente die Bedingung erfüllen müssen.
Du musst also entweder eine Schleife verwenden oder logical indexing.
Im vorliegenden Fall verstehe ich das aber auch einfach nicht. Was soll denn passieren, wenn manche Elemente größer sind und manche kleiner? Sollen dann beide Anweisungen ausgeführt werden? Das eine würde doch das andere überschreiben?
Grüße,
Harald
|
|
|
Osterwma |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 38
|
 |
|
 |
Anmeldedatum: 01.12.14
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 18.12.2014, 10:30
Titel:
|
 |
Hi Harald,
jetzt verstehe ich was du meinst.
Also das Problem ist, dass in Abhängigkeit von TCT die einzelnen Elemente des zu berechnenden Vektors SolA mal durch die 180-asind(.... Formel und mal durch die 180+asind((.... Formel berechnet werden müssen.
Soll heißen, die if Funktion schaut sich nacheinander die Einträge in TCT an und entscheidet dann ob 180-asind oder 180+asind angewendet werden muss, um den Vektor SolA zu erstellen.
Jetzt weiß ich aber nicht, wie ich es anstellen kann, dass ab 12.00 Uhr der Vektor nicht einfach wieder überschrieben wird, wie du schon vermutet hast... Von Schleifen verstehe ich leider noch nicht genug, um einschätzen zu können, ob das der richtige Weg wäre... Falls ja, wie würde der Code hierzu aussehen.
Vielen Dank nochmal. Wüsste nicht, wie ich ohne dich vorrankommen sollte.
Grüße
Martin
|
|
|
Osterwma |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 38
|
 |
|
 |
Anmeldedatum: 01.12.14
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 18.12.2014, 17:11
Titel:
|
 |
|
 |
|
Hi Harald,
ich habe es über logical indexing hinbekommen, indem ich TCT in zwei Vektoren mit 1 und 0 aufgeteilt habe ( 1 für TCT<0 im anderen 1 für TCT>0) und mit den ehmaligen if else Funktionen multipliziert habe...
Klappt auf den ersten Blick super
Jetzt bin ich aber doch an den Punkt angelangt, wo eine Schleife wahrscheinlich notwendig wird.
Ich kann jetzt die Photovoltaik Leistung berechnen und habe einen Vektor mit dem elektrischem Verbrauch ( jeweils 1x525600 double ).
Jetzt soll immer wenn der Verbrauch kleiner ist als die PV-Erzeugung die überschüssige Energie in einer Batterie gespeichert werden.
Umgekehrt soll die gespeicherte Batterie abgerufen werden, wenn der Verbrauch über der Erzeugung liegt.
Also eine klassische If Else Bedingung. Allerdings besteht hier wieder das Problem, dass der Vektor wieder komplett überschrieben wird, sobald sich die Bedingung ändert.
In Worten: Der aktuelle Batteriestatus ergibt sich aus dem aktuellen Batterie Status der vorherigen Minute( also dem vorherigen errechneten Element im Akt_Bat Vektor ) plus PV_Produktion minus elektrischer Verbrauch.
Können ja erstmal so tun, als ob die Batterie nach oben und nach unten keine Speicherbegrenzungen hat.
Ich hoffe das ist einigermaßen verständlich
Kann man dies mithilfe einer Schleife berechnen? Wie würde das dann aussehen?
Vielen Dank für die Rückmeldung.
Grüße
Martin
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.499
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 18.12.2014, 19:34
Titel:
|
 |
Hallo,
also so?
Ansonsten bitte nochmal erklären.
Wenn eine Frage nichts mehr mit dem restlichen Thread zu tun hat, dann lohnt es sich oft, einen neuen aufzumachen. Dann fühlen sich auch andere berufen, beizutragen.
Grüße,
Harald
|
|
|
Osterwma |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 38
|
 |
|
 |
Anmeldedatum: 01.12.14
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 28.12.2014, 17:29
Titel:
|
 |
Hi Harald,
vielen Dank für die Antwort. Mit ein paar Anpassungen konnte ich das gut einbauen...
Hast allerdings recht, was den Thread betrifft.
Sollten weitere Fragen auftauchen, kommen die in einen Neuen.
An dieser Stelle nochmals vielen Dank für deine Hilfe & einen guten Rutsch ins neue Jahr.
Viele Grüße
Martin
|
|
|
|
Gehe zu Seite Zurück 1, 2
|
Einstellungen und Berechtigungen
|
|
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
| RSS
Hosted by:
Copyright © 2007 - 2025
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.
|
|