|
|
Von bis Werte aus einer Matrix erhalten |
|
Pat87 |

Forum-Anfänger
|
 |
Beiträge: 21
|
 |
|
 |
Anmeldedatum: 01.09.15
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: R2016b
|
 |
|
|
 |
|
Verfasst am: 15.09.2015, 21:31
Titel: Von bis Werte aus einer Matrix erhalten
|
 |
|
 |
|
Hallo, ich bräuchte mal einen Tipp zur Umsetzung! Hab da noch nichts drüber gefunden.
Ich habe eher mit Simulink zu tun, benötige jetzt aber Matlab, da ich das mit Simulink nicht umsetzen kann.
Ich habe alle meine Werte von Simulink in eine 6x3007 Matrix A zusammen gefasst.
Ich möchte eine 2. Matrix B schaffen, in der spezielle Zeilen von Matrix A übertragen werden. Das krieg ich auch so weit hin, in dem ich den Bereich angebe.
Wenn ich aber ein paar Parameter ändere, beginnt der Bereich früher bzw später an, müsste also die Zeilen wieder raussuchen und das ist mir zu aufwendig.
In der 1. Spalte habe ich eine Zahlenfolge und in der 2. eine Zahlenfolge, die immer zwischen 0 und 720 verläuft, aber beide laufen synchron mit gleichen Abständen.
Ich müsste Matlab sagen, das er entweder in der 1. Spalte alle Werte zwischen (ungefähr) 2 Werten ausgibt oder eine Schleife für die 2. Spalte,
in der Matlab ab der n-Wiederholung die Werte zwischen 0 und 720 ausgibt.
Wie kann man das elegant programmieren? Oder gibt es da andere Möglichkeiten (leichtere)?
Sollte man den Bereich direkt und ohne Matrix B plotten können, nehme ich da bevorzugt Vorschläge/Ideen an.
Vielen Dank schon mal
|
|
|
|
|
Jan S |

Moderator
|
 |
Beiträge: 11.057
|
 |
|
 |
Anmeldedatum: 08.07.10
|
 |
|
 |
Wohnort: Heidelberg
|
 |
|
 |
Version: 2009a, 2016b
|
 |
|
|
 |
|
Verfasst am: 16.09.2015, 09:34
Titel: Re: Von bis Werte aus einer Matrix erhalten
|
 |
Hallo Pat87,
Ich verstehe die Frage nicht. Die bisherige Formulierung ist dafür zu abstrakt.
Zitat: |
Wenn ich aber ein paar Parameter ändere, beginnt der Bereich früher bzw später an, müsste also die Zeilen wieder raussuchen und das ist mir zu aufwendig. |
Was bedeutet das?
Gruß, Jan
|
|
|
Pat87 |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 21
|
 |
|
 |
Anmeldedatum: 01.09.15
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: R2016b
|
 |
|
|
 |
|
Verfasst am: 16.09.2015, 15:12
Titel:
|
 |
|
 |
|
Stimmt, habe ich viel zu abstrakt erklärt ^^
Mein Modell ist ein Verbrennungsmotor, der alle 720° von vorne beginnt (einspritzen, zünden etc)
Matrix A ist stark verkürzt im Anhang. Hoffe, damit wird mein Problem klarer.
Die ersten Werte sind nicht zu gebrauchen, da meine nicht exakten Annahmen (Zustand im Zylinder) die Werte beeinflussen,
aber nach ein paar Umdrehung wird der Einfluss immer kleiner (pendelt sich ein).
Deshalb möchte ich die Werte von einem zb 5. oder 6. Zyklus haben, alle darauf folgenden Zyklen brauche ich nicht, da der Unterschied nur minimal ist.
Die Werte vom 5. Zyklus will ich plotten, deshalb hab ich eine Matrix B, in der nur die Werte vom 5. Zyklus sind.
Die Zeilen, wann dieser Zyklus beginnt/endet, sind fest in Matrix A, solange ich den Parameter Drehzahl nicht ändere.
Wenn ich die Drehzahl höher einstelle, beginnt der 5. Zyklus ein paar Zeilen früher (die Sprünge in Spalte 1 und 2 werden größer).
Deshalb müsste ich in Matrix A manuell suchen, wann der 5. Zyklus beginnt, meine Definition von Matrix B ändern und dann plotten.
Das will ich automatisieren, in dem ich Matlab in Matrix A nach Anfang und Ende des 5. Zyklus suchen lasse und das dann plotten lasse.
Hoffe, ich konnte jetzt dir weiter helfen, mir weiter zu helfen ^^
Beschreibung: |
|
 Download |
Dateiname: |
Matrix A.png |
Dateigröße: |
23.45 KB |
Heruntergeladen: |
265 mal |
|
|
|
Winkow |

Moderator
|
 |
Beiträge: 3.842
|
 |
|
 |
Anmeldedatum: 04.11.11
|
 |
|
 |
Wohnort: Dresden
|
 |
|
 |
Version: R2014a 2015a
|
 |
|
|
 |
|
Verfasst am: 16.09.2015, 16:11
Titel:
|
 |
du musst doch nur nach der stelle 720 in spalte C suchen und davon halt den 5. oder so. mir ist das problem noch nicht ganz klar. am besten du postest mal ein lauffähiges minimalbeispiel und zeigst daran was nicht so klappt wie du dir das vorstellst.
_________________
richtig Fragen
|
|
|
Pat87 |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 21
|
 |
|
 |
Anmeldedatum: 01.09.15
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: R2016b
|
 |
|
|
 |
|
Verfasst am: 16.09.2015, 19:19
Titel:
|
 |
|
 |
|
Die Idee hatte ich auch, genauso den absoluten Winkel (Spalte B) zu verwenden, in dem ab der Zeile mit dem Wert (5*720) 3600
bis zur Zeile mit dem Wert (6*720) 4320 alle Werte in eine Matrix kommen bzw direkt geplottet werden.
Mir kommt die Idee mit dem absoluten Winkel einfacher vor, da ich keine Schleife brauche, sondern direkt nach einem Wert suche. Deswegen arbeite ich da gerade dran.
Mein Problem ist nur, die Zeilennummer als Zahl zu bekommen, mit der ich weiter arbeiten kann.
Ich finde immer nur die Lösung als Spaltenvektor [0 0 1 0 0]', ich dagegen will die Zahl 3 haben, weil es die 3. Zeile ist.
Ich weiß, dass man mit row die Zeile ausgegeben kann und das man mit find die Zeile finden kann, aber wie verbinde ich diese Befehle miteinander?
Bisher versteht Matlab mich noch nicht ^^
Beschreibung: |
Hoffe man versteht, was ich will. Bin im Programmieren (noch) eine Niete. ^^ |
|
 Download |
Dateiname: |
Wert_finden.m |
Dateigröße: |
553 Bytes |
Heruntergeladen: |
325 mal |
|
|
|
Winkow |

Moderator
|
 |
Beiträge: 3.842
|
 |
|
 |
Anmeldedatum: 04.11.11
|
 |
|
 |
Wohnort: Dresden
|
 |
|
 |
Version: R2014a 2015a
|
 |
|
|
 |
|
Verfasst am: 16.09.2015, 20:01
Titel:
|
 |
Zitat: |
Ich weiß, dass man mit row die Zeile ausgegeben kann |
der befehl row ist mir nicht bekannt.
find giebt doch den index aus
gibt doch 3 zurück
_________________
richtig Fragen
|
|
|
Pat87 |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 21
|
 |
|
 |
Anmeldedatum: 01.09.15
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: R2016b
|
 |
|
|
 |
|
Verfasst am: 17.09.2015, 00:29
Titel:
|
 |
Du hast Recht, hab das in einer kleinen Matrix ausprobiert und es funktioniert.
Hatte in meinem Modell in der Matrix A entdeckt, das es immer ein vielfaches von 720 existiert, deshalb das '==' Zeichen. Aber bei mir gab es nur das:
Da es bei kleineren Matrizen ging, hab ich kleinere Werte getestet und sehe da:
Ich glaube, es liegt es daran, das ich '==' verwende und die Zahl in der Matrix [3600.00000000005] lautet. Wie kann ich Matlab sagen, er soll die Zeile nehmen, die dem Wert am dichtesten ist?
|
|
|
Pat87 |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 21
|
 |
|
 |
Anmeldedatum: 01.09.15
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: R2016b
|
 |
|
|
 |
|
Verfasst am: 17.09.2015, 00:45
Titel:
|
 |
Hab darunter natürlich was gefunden
Das funktioniert schon mal, geht das auch ohne die Variable I?
|
|
|
Winkow |

Moderator
|
 |
Beiträge: 3.842
|
 |
|
 |
Anmeldedatum: 04.11.11
|
 |
|
 |
Wohnort: Dresden
|
 |
|
 |
Version: R2014a 2015a
|
 |
|
|
 |
|
Verfasst am: 17.09.2015, 09:44
Titel:
|
 |
Zitat: |
geht das auch ohne die Variable I? |
wenn deine matlab version nicht allzu alt ist geht
_________________
richtig Fragen
|
|
|
Pat87 |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 21
|
 |
|
 |
Anmeldedatum: 01.09.15
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: R2016b
|
 |
|
|
 |
|
Verfasst am: 17.09.2015, 23:38
Titel:
|
 |
Vielen Dank, hat geklappt ^^
Vielen Dank für die Impulse, das Problem war wirklich nicht schwer, aber irgendwie sah ich die Lösung nicht selbst
|
|
|
|
|
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.
|
|