|
|
|
einträge mittels "eval"-befehl finden und schreib |
|
| Ikarus |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 18.10.2010, 18:24
Titel: einträge mittels "eval"-befehl finden und schreib
|
 |
| |
 |
|
hallo zusammen,
ich habe verschiedene matrizen (nx3) namens "b_i", i=1..50 (also b_1, b_2,...,b_50)
von diesen möchte ich jeweils die zugehörigen einträge der 1. und 2. spalte des maximums der dritten spalte in eine neue matrix b_neu schreiben.
beispiel:
b_1 =
900.0000 921.0000 0.4440
901.0000 921.0000 0.4173
899.0000 922.0000 0.3432
900.0000 922.0000 0.5465
901.0000 922.0000 0.5624
1. und 2. spalteneintrag des maximums der dritten spalte sind:
>> b_new(1,1:2) = b_1(b_1(:,3)==max(max(b_1(:,3))),1:2)
b_new =
901 922
Diese beiden Werte sind also die Einträge der ersten Zeile der b_new.
die nächste zeile von b_new ergibt sich dann durch:
b_new(2,1:2) = b_2(b_2(:,3)==max(max(b_2(:,3))),1:2)
.........
nun möchte ich das aber natürlich nicht per hand machen, sondern durchlaufen lassen, komme aber mit eval-funktion nicht weiter.
einer meiner versuche (erstmal ohne laufvariable):
im übrigen komme ich an die matrix beispielsweise:
>> eval(['b_' , num2str(i)])
b_1 =
900.0000 921.0000 0.4440
901.0000 921.0000 0.4173
899.0000 922.0000 0.3432
900.0000 922.0000 0.5465
901.0000 922.0000 0.5624
aber wie komme ich nun an die einträge, z.b. b_1(1,2) mit num2str(i) und eval (vor allem wenn das geht, wie dann bitte in der o.g. schleife. eventuell geht das auch ohne eval (??)...
ich hoffe mein problem ist verständlich dargestellt und dass mir jemand helfen kann wenn ich sonst selber doch noch den durchbruch schaffe, poste ich es natürlich hier anschließend.
lg,
christian
|
|
|
|
|
|
| denny |

Supporter
|
 |
Beiträge: 3.853
|
 |
|
 |
Anmeldedatum: 14.02.08
|
 |
|
 |
Wohnort: Ulm
|
 |
|
 |
Version: R2012b
|
 |
|
|
 |
|
Verfasst am: 19.10.2010, 12:15
Titel:
|
 |
Hallo
Du musst ja alle i mit NUM2STR konvertieren
|
|
|
|
| Ikarus |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 19.10.2010, 13:02
Titel:
|
 |
Supi, das ist es... Vielen Dank !
ich frage mich nur, ob das wirklich so einfach war, so schnell bzw. kurz wie du es hingeschrieben hast. ich hab auch schon lange gebraucht herauszufinden, dass man mit eval verschiedene variablen mit laufindex erzeugen kann. bin aber auch noch nicht so lange mit matlab dabei..
wie dem auch sei, vielen dank nochmal !
grüße
|
|
|
|
Verschoben: 20.10.2010, 13:19 Uhr von denny Von Simulink nach Programmierung |
| denny |

Supporter
|
 |
Beiträge: 3.853
|
 |
|
 |
Anmeldedatum: 14.02.08
|
 |
|
 |
Wohnort: Ulm
|
 |
|
 |
Version: R2012b
|
 |
|
|
 |
|
Verfasst am: 20.10.2010, 13:21
Titel:
|
 |
Hallo
Das Thema hat eigentlich mit Simulink nichts zu tun, deshalb verschiebe ich dein Beitrag in Forum Programmierung
|
|
|
|
| Jan S |

Moderator
|
 |
Beiträge: 11.057
|
 |
|
 |
Anmeldedatum: 08.07.10
|
 |
|
 |
Wohnort: Heidelberg
|
 |
|
 |
Version: 2009a, 2016b
|
 |
|
|
 |
|
Verfasst am: 20.10.2010, 17:21
Titel: Re: einträge mittels "eval"-befehl finden und sch
|
 |
Hallo Ikarus,
| Zitat: |
| ich habe verschiedene matrizen (nx3) namens "b_i", i=1..50 (also b_1, b_2,...,b_50) |
Die beste Lösung dieses Problems wäre, erst gar nicht 50 verschiedene Variablen zu erstellen, sondern ein Cell-Array "b{i}". Einen Index in den Namen zu verstecken macht Programme schwerfällig und schwer zu debuggen. Wenn man dann noch mit EVAL darauf zugreift, werden alle schlauen Methoden, die Matlab verwendet um effizient zu rechnen, über den Haufen geworfen.
Eine einleuchtend bessere Idee einen Index zu verwenden ist, einen Index zu verwenden.
Ich habe ja auch nicht meine Telefonnummer an meinen Vornamen angehängt. ;-)
Wenn Dich das interesiert, kannst Du in ein paar dutzende Threads dazu lesen, die z.B. ich hier geschrieben habe.
Gruß, Jan
|
|
|
|
| Ikarus |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 21.10.2010, 16:57
Titel:
|
 |
hey jan,
wo genau finde ich diese threads ?... mich würde es sehr interessieren, zumal ich (was ich zu erwähnen vergaß) ja unterschiedlich große matrizen b_i habe (unterschiedliche n bei nx3)..
viele grüße
|
|
|
|
| Jan S |

Moderator
|
 |
Beiträge: 11.057
|
 |
|
 |
Anmeldedatum: 08.07.10
|
 |
|
 |
Wohnort: Heidelberg
|
 |
|
 |
Version: 2009a, 2016b
|
 |
|
|
 |
|
Verfasst am: 21.10.2010, 17:53
Titel:
|
 |
|
|
|
|
|
|
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.
|
|