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

Position/Zeilennummer eines Wertes in einer Matrix suchen

 

Edwin
Forum-Anfänger

Forum-Anfänger


Beiträge: 31
Anmeldedatum: 27.09.10
Wohnort: Charleston, SC
Version: 2009b
     Beitrag Verfasst am: 29.12.2010, 19:17     Titel: Position/Zeilennummer eines Wertes in einer Matrix suchen
  Antworten mit Zitat      
Hallo,

mal wieder sehe ich den Wald vor lauter Baeumen nicht mehr.

Mein Problem diesmal:
Ich habe eine Matrix
Code:
 A = [1 2 2 2 2 2 2 2 3 3 3 4 4 4 4 4 ]

Nun wei& ich von dieser Matrix, dass nacheinander die Werte 1, 2,3,... auftreten. Mich interessiert jedoch nun die Position in der Matrix, also in welcher Zeile beginnt die Matrix mit dem Wert 2 und in welcher Zeile endet der Wert 2.

Hier in Matrix A waere mein Ergebnis:
2 entspricht
Code:

3 entspricht
Code:

usw.

Diese Stellen benoetige ich um aus einer anderen Matrix mit der selben Matrixlaenge Daten auszulesen.
In etwa so:


Code:
K>> B(2:8)

ans =

    43    23    64    86    23    98    67





Herzlichen Dank!

Viele Grue&e und einen guten Rutsch,
Edwin
Private Nachricht senden Benutzer-Profile anzeigen


Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 29.12.2010, 20:59     Titel: Re: Position/Zeilennummer eines Wertes in einer Matrix suche
  Antworten mit Zitat      
Hallo Edwin,

Zitat:
Ich habe eine Matrix
Code:
 A = [1 2 2 2 2 2 2 2 3 3 3 4 4 4 4 4 ]

Nun wei& ich von dieser Matrix, dass nacheinander die Werte 1, 2,3,... auftreten. Mich interessiert jedoch nun die Position in der Matrix, also in welcher Zeile beginnt die Matrix mit dem Wert 2 und in welcher Zeile endet der Wert 2.

Nun, die Zeile zu finden ist leicht: Das ist immer 1. ;-)
Du meinst wahrscheinlch die Spalte.

Code:
A = [1 2 2 2 2 2 2 2 3 3 3 4 4 4 4 4 ];
index = find([diff(A), 1]);
 

Hilf das? Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Edwin
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 31
Anmeldedatum: 27.09.10
Wohnort: Charleston, SC
Version: 2009b
     Beitrag Verfasst am: 29.12.2010, 22:54     Titel:
  Antworten mit Zitat      
Hallo Jan S,

in der Zwischenzeit habe ich eine eigene Loesung gebastelt, aber die ist weitaus langsamer als deine Loesung!!! Herzlichen Dank fuer den Vorschlag!

Mein Ansatz ist(Auszug):
Code:

num_s1 = numel(turns_floor(turns_floor < (run2-1)));
num_diff = (numel(turns_floor(turns_floor < (run2))) - numel(turns_floor(turns_floor < (run2-1))));
num_s2 = numel(turns_floor(turns_floor < (run2)));
       
        start_point = num_s2 - num_diff + 1 ;
        end_point = num_s2  ;


Mit meinen Daten benoetige ich fuer den Schritt, weil er in einer Schleife laueft, ca. 4,5 Min. Mit deinem Vorschlag komme ich auf das gleiche Ergebnis, allerding in weniger als 2 Sekunden.
Wahnsinn!


Danke,

guten Rutsch ins neue Jahr!

Edwin
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 30.12.2010, 00:39     Titel:
  Antworten mit Zitat      
Hallo Edwin,

Zitat:
Mit meinen Daten benoetige ich fuer den Schritt, weil er in einer Schleife laueft, ca. 4,5 Min. Mit deinem Vorschlag komme ich auf das gleiche Ergebnis, allerding in weniger als 2 Sekunden.

Schön!

Du hattest Dein Problem auf ein Minimum reduziert um es hier zu posten und Dich (und die Leser!) nicht mit nebensächlichen Details aufgehalten. So habe ich eine effiziente Lösungsmethode mit einer einzigen Zeile beschreiben können, die Du dann offenbar erfolgreich in Dein Programm einbauen konntest. --- So macht helfen Spaß!

Gruß, Jan
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 - 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.