|
|
Unterschiedliche Zeilen aus Matrix auslesen |
|
Carolin. |
Forum-Anfänger
|
|
Beiträge: 12
|
|
|
|
Anmeldedatum: 10.09.20
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 16.09.2020, 19:22
Titel: Unterschiedliche Zeilen aus Matrix auslesen
|
|
|
|
|
Hallo,
ich habe eine Matrix mit 3 Spalten und x Zeilen. In dieser sind X-,Y-Koordinaten und Spannungen enthalten. Da die Matrix mit den Koordinaten eine Fläche beschreibt, sind zu mehreren identischen Y-Werten unterschiedliche X-Werte und Spannungen zugewiesen (siehe Tabelle unten). Jetzt möchte ich jeweils die Zeilen auslesen, in der für jeden Y-Wert die größte Spannung enthalten ist. Z.B. 0,13 0,01 180,22; dann 0 0 165,96; dann 0,62 -0,01 117,01 usw. Kann mir jemand sagen, wie diese neue Matrix am einfachsten zu erstellen ist?
Weiter beginnt die Tabelle schon mit Y-Werten >0,01. Diese möchte ich gerne vorher löschen, oder erst ab da mit der Selektierung anfangen.
1,33 0,01 86,04
0,91 0,01 98,12
0,83 0,01 101,76
0,77 0,01 105,58
0,71 0,01 109,57
0,65 0,01 113,75
0,44 0,01 141,1
0,13 0,01 180,22
1,21 0 88,85
0,58 0 121,14
0,55 0 124,56
0,53 0 126,16
0,51 0 131,02
0 0 165,96
-0,09 0 150,9
-0,19 0 140,72
-0,29 0 134,43
-0,39 0 129,99
-0,50 0 126,57
-0,60 0 123,87
-0,71 0 121,68
-0,82 0 119,83
-0,94 0 118,23
-1,06 0 116,8
-1,18 0 115,54
-1,30 0 114,43
-1,43 0 113,45
-1,56 0 112,55
-1,69 0 111,73
-1,82 0 110,97
-1,96 0 110,27
-2,11 0 109,64
-2,25 0 109,06
-2,40 0 108,53
-2,55 0 108,01
-2,71 0 107,49
-2,87 0 107,03
-3,04 0 106,61
-3,21 0 106,22
-3,38 0 105,83
-3,55 0 105,45
-3,74 0 105,1
-3,92 0 104,76
-4,11 0 104,45
-4,31 0 104,15
-4,51 0 103,86
-4,71 0 103,59
-4,92 0 103,33
1,81 -0,01 79,68
1,64 -0,01 81,78
1,11 -0,01 91,85
1,01 -0,01 95,02
0,93 -0,01 98,34
0,72 -0,01 109,14
0,67 -0,01 113
0,62 -0,01 117,01
1,49 -0,02 84,11
0,85 -0,02 101,81
0,78 -0,02 105,41
0,59 -0,02 120,19
0,55 -0,02 124,01
0,53 -0,02 126,23
0,46 -0,02 133,99
1,35 -0,03 86,65
1,23 -0,03 89,38
0,63 -0,03 115,89
0,28 -0,03 162,25
1,13 -0,04 92,27
1,03 -0,04 95,31
0,94 -0,04 98,49
0,87 -0,04 101,78
0,8 -0,04 105,17
0,74 -0,04 108,65
0,68 -0,04 112,21
0,55 -0,04 124,18
0,51 -0,04 126,47
1,84 -0,05 80,43
1,67 -0,05 82,48
0,6 -0,05 118,86
1,51 -0,06 84,75
1,38 -0,06 87,22
0,7 -0,06 111,43
0,65 -0,06 114,8
1,25 -0,07 89,85
1,15 -0,07 92,64
1,05 -0,07 95,55
.
.
.
|
|
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.495
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 16.09.2020, 20:16
Titel:
|
|
Hallo,
Zitat: |
Kann mir jemand sagen, wie diese neue Matrix am einfachsten zu erstellen ist? |
Versuch es mal mit
findgroups
und
splitapply
.
Zitat: |
Weiter beginnt die Tabelle schon mit Y-Werten >0,01. Diese möchte ich gerne vorher löschen, oder erst ab da mit der Selektierung anfangen. |
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 ;)
|
|
|
Carolin. |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 12
|
|
|
|
Anmeldedatum: 10.09.20
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 17.09.2020, 08:45
Titel:
|
|
Hallo,
die Idee mir dieser Vorgehensweise hat mich leider nicht zu dem Ziel gebracht, welches ich mir erhofft hatte. Jetzt eine andere Vorgehensweise.
Ich habe meine Tabelle nun nach Spalte 3 sortiert. Jetzt möchte ich bei Spalte 2 alle Zeilen löschen, die kleiner bzw. gleich dem Wert in der Zeile davor sind (es handelt sich um negative Einträge).
Ist das irgendwie möglich?
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.495
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 17.09.2020, 09:16
Titel:
|
|
Hallo,
Zitat: |
die Idee mir dieser Vorgehensweise hat mich leider nicht zu dem Ziel gebracht, welches ich mir erhofft hatte. Jetzt eine andere Vorgehensweise. |
Was genau hast du versucht und wie weicht das Ergebnis vom erhofften ab?
Zitat: |
Jetzt möchte ich bei Spalte 2 alle Zeilen löschen, die kleiner bzw. gleich dem Wert in der Zeile davor sind (es handelt sich um negative Einträge).
Ist das irgendwie möglich? |
Selbes Prinzip wie im vorherigen Vorschlag:
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 ;)
|
|
|
Carolin. |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 12
|
|
|
|
Anmeldedatum: 10.09.20
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 17.09.2020, 16:23
Titel:
|
|
Hallo,
ich habe diesen Code eingegeben:
und erhalte folgende Fehlermeldung:
Error using false
Size vector should be a row vector with real elements.
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.495
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 17.09.2020, 17:23
Titel:
|
|
Hallo,
da fehlte bei mir ein ]
Ist sig_1Vx ein Skalar?
Wenn du das mit den Klammern und dem Strichpunkt übernimmst, sollte es dann klappen.
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 ;)
|
|
|
Carolin. |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 12
|
|
|
|
Anmeldedatum: 10.09.20
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 17.09.2020, 18:01
Titel:
|
|
Hallo,
ich habe mir das gerade noch einmal angeschut und so ganz das, was ich brauche ist es noch nicht.
Das ist meine aktuelle Tabelle:
x-coor y-coor sig_1
0,26 0,03 180,85
0,13 0,01 180,22
0,00 0,00 165,96
0,38 0,08 162,41
0,28 -0,03 162,25
0,16 -0,07 160,06
0,04 -0,10 153,44
0,41 0,05 151,51
-0,09 0,00 150,90
-0,07 -0,11 146,04
0,19 -0,16 141,33
0,32 -0,11 141,31
0,44 0,01 141,10
-0,19 0,00 140,72
0,07 -0,19 139,91
-0,17 -0,11 139,35
-0,05 -0,21 137,32
0,50 0,13 136,75
-0,29 0,00 134,43
-0,15 -0,22 134,35
Ich möchte es erreichen, dass sie wie folgt aussieht:
x-coor y-coor sig_1
0,26 0,03 180,85
0,13 0,01 180,22
0,00 0,00 165,96
0,28 -0,03 162,25
0,16 -0,07 160,06
0,04 -0,10 153,44
-0,07 -0,11 146,04
0,19 -0,16 141,33
0,07 -0,19 139,91
-0,05 -0,21 137,32
-0,15 -0,22 134,35
Ich möchte die Zeilen löschen, sodass die Werte der Spalte mit den y-coor immer kleiner werden.
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.495
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 17.09.2020, 18:28
Titel:
|
|
Hallo,
auch das ist möglich:
Ich darf aber darauf hinweisen, dass du geschrieben hast, dass du die Zeilen, in denen Spalte 2 kleiner als in der Zeile davor ist, löschen willst. Stattdessen wolltest du aber anscheinend alle Zeilen löschen, in denen Spalte 2 nicht kleiner als alle vorherigen Werte dieser Spalte sind. Das ist ein ziemlicher Unterschied.
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 ;)
|
|
|
Carolin. |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 12
|
|
|
|
Anmeldedatum: 10.09.20
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 17.09.2020, 18:50
Titel:
|
|
hm, das ist irgendwie immer noch nicht das was ich suche.
Vielleicht noch einmal etwas deutlicher nur mit der Spalte um die es geht:
0,03
0,01
0,00
0,08
-0,03
-0,07
-0,10
0,05
0,00
-0,11
-0,16
-0,11
0,01
0,00
-0,19
-0,11
-0,21
0,13
0,00
-0,22
-0,11
die zuvor abgebildete Spalte ist mein IST-Zustand. Die Spalte anschließend gibt meinen SOLL-Zustand wieder:
0,03
0,01
0,00
-0,03
-0,07
-0,10
-0,11
-0,16
-0,19
-0,21
-0,22
Die Werte sollen immer kleiner werden. Die Zeilen zwischen diesen Werten sollen gelöscht werden
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.495
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 17.09.2020, 20:26
Titel:
|
|
Hallo,
der Code liefert genau die Ergebnisse, die du gewollt hast.
Insbesondere ist die zweite Spalte genau das, wie du sie beschreibst.
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 ;)
|
|
|
Carolin. |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 12
|
|
|
|
Anmeldedatum: 10.09.20
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 17.09.2020, 22:41
Titel:
|
|
Hallo,
ich habe den Code zunächst so einfügt:
damit hat es nicht funktioniert.
Wenn ich den Code jedoch so eingebe:
funktioniert alles.
Leider wird mir in der Spalte mit den y-coor immer noch ein Wert doppelt ausgegeben. Kann man über einen Befehl doppelte Werte löschen?
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.495
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 18.09.2020, 07:54
Titel:
|
|
Hallo,
deine beiden Ansätze sind genau entgegengesetzt. Im ersten behältst du die Zeilen, die du im zweiten löschst. Wenn du Code abänderst und dann damit Probleme hast, poste bitte auch den Code. Man kann ja nicht erahnen, was du da machst.
Zitat: |
Kann man über einen Befehl doppelte Werte löschen? |
Entweder den letzten Vorschlag so anpassen, dass mit dem cummin aller vorherigen Werte verglichen wird oder den Ansatz von 17.9., 18:23 anpassen.
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 ;)
|
|
|
|
|
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.
|
|