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

Matrixeintrag suchen, Abspeichern in neuer Variable

 

Joachim1968

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.09.2013, 10:45     Titel: Matrixeintrag suchen, Abspeichern in neuer Variable
  Antworten mit Zitat      
Ich sitze gerade vor einem Problem. Ich habe im groben gegeben:
Matrix A = [20, 10, 4, 5; 20, 10, 6, 6; 20, 10, 8, 7; 20, 10, 8, 7; 5, 2, 9, 10; 5, 2, 1, 2; 1, 9, 3,1];
Ich müsste jetzt eine Abfrage einfügen, die bewirkt, dass alle Zeilen, bei denen die Elemente der Spalten 1 und 2 identisch sind wiederum in einer neuen Matrix abgespeichert werden.
als Ergebnis sollten dann hier z.B. drei neue Matrizen entstehen, die natürlich unterschiedlich benannt gespeichert werden sollen:
M1 = [20, 10, 4, 5; 20, 10, 6, 6; 20, 10, 8, 7; 20, 10, 8, 7];
M2 = [5, 2, 9, 10; 5, 2, 1, 2];
M3 = [1, 9, 3,1];
Ist so eine Abfrage in Matlab möglich?

Es wäre toll, wenn jemand eine Antwort bereit hätte.

Endziel (gerade aber eher zweitrangig) sollte sein, dass die neuen Matrizen M1 bis M3 als .txt Dateien abgespeichert werden. Der Dateiname sollte sich dabei aus den Elementen der ersten beiden Spalten zusammensetzen, für das Beispiel M1 also 20.10.txt enthalten soll das txt-file jedoch nur noch die Spalten 3 bis 4)


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 19.09.2013, 10:55     Titel:
  Antworten mit Zitat      
Hallo,

durchnumerierte Variablen würde ich nach Möglichkeit vermeiden. Cell Arrays sind für die automatisierte Verarbeitung besser.

Code:
neu = find(diff(A(:,1))~=0 | diff(A(:,2))~=0);
blockEnde = [neu; size(A,1)];
blockStart = [1; neu+1];
M = cell(1,numel(blockStart));
for I = 1:numel(blockStart)
    M{I} = A(blockStart(I):blockEnde(I),:);
end


Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 19.09.2013, 11:52     Titel:
  Antworten mit Zitat      
hey harald funktioniert das dann aber nicht nur wenn die matrix schon sortiert ist ?. das siht zwar im beispiel so aus aber kann ja sein das das zufall ist Smile. najagut ein vorgeschaltet sortrows sollte das dann ja erledigen. Smile
_________________

richtig Fragen
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 19.09.2013, 13:21     Titel:
  Antworten mit Zitat      
Hallo,

stimmt. Meine (leider nicht immer zutreffende) Annahme ist meist, dass das Beispiel repräsentativ für die tatsächliche Anwendung ist ;)

Grüße,
Harald
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: 19.09.2013, 17:53     Titel:
  Antworten mit Zitat      
Hallo Harald,

Hast Du gute Gründe für diese Annahme?
Es ist bei Fragen ja ein typisches Phänomen, dass der Fragende noch nicht weiß, welche Aspekte relevant sind. Für die Formulierung eines wirklich repräsentativen Datensatzes muss man eigentlich die gesamte Struktur der Lösung bereits erfasst haben. Und wenn es soweit ist, postet man meistens nicht mehr im Forum.

Viele Grüße, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 19.09.2013, 20:36     Titel:
  Antworten mit Zitat      
Hallo Jan,

Zitat:
Für die Formulierung eines wirklich repräsentativen Datensatzes muss man eigentlich die gesamte Struktur der Lösung bereits erfasst haben.

Das sehe ich nicht so. Nicht umsonst ist eine Matrix von Zufallszahlen, ggf. mit bestimmten Dimensionen, sehr oft schon ein repräsentativer Datensatz.

In diesem speziellen Fall denke ich doch, dass das Sortieren der Zeilen deutlich einfacher ist als das Aufspalten in die Blöcke. Es ist also zudem gut möglich, dass jemand zwar weiß, wie er seine Daten sortiert (falls sie es denn noch nicht sind), aber nicht weiß, wie er weitermachen muss.
Vor allem aber: im Zweifelsfall kann man doch nachfragen?

Grüße,
Harald
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: 20.09.2013, 13:39     Titel:
  Antworten mit Zitat      
Hallo Harald,

RAND bietet natürlich sehr häufig eine Möglichkeit Testdaten zu generieren. Aber gerade wenn es darauf ankommt, ob die Daten sortiert sind, muss der Fragende dieses Detail als wichtig erkennen und erklären.

Ich war verblüfft, als für eine Diskussion Testdaten per RAND erzeugt wurden: Es sollten zwei quadratische Matrizen erstellt werden, deren Elemente zwar "irgendwie" von einander abhängen, innerhalb jeder Matrizen sollten die Elemente aber nicht korreliert sein:
Code:
X = rand(500, 500);
Y = inv(X);

Die Ergebnisse waren aber ganz anders als erwartet. Schließlich haben wir mit IMAGESC() ganz anschaulich feststellen können, dass die Inverse einer zufälligen Matrix ganz und gar nicht zufällig ist. Dies war dann besser:
Code:
Y = rem(X+0.5, 1).'


Du hast recht, dass für Probleme, bei denen der Algorithmus nicht von den Werten abhängt, z.B. DOT-Produkt, MEAN, PLOT, etc., sinnvolle Testdaten auch ohne Kenntnis über die Struktur der Lösung angegeben werden können. Anders sieht es aus, wenn der Algorithmus von den Werten abhängt: Gauss-Zerlegung mit Pivotisierung, Sortieren mit oder ohne identische Elemente, gleitender Mittelwert mit oder ohne NaNs im Input, Integration einer stetigen oder nicht-stetigen Funktion etc.
Dann benötigen repräsentative Testdaten schon, dass man erkannt hat, wo eigentlich der Knackpunkt liegt.

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.