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

Suchen von Strings aus Matrix + Kopieren

 

Piefke
Forum-Newbie

Forum-Newbie


Beiträge: 3
Anmeldedatum: 19.09.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.09.2015, 00:13     Titel: Suchen von Strings aus Matrix + Kopieren
  Antworten mit Zitat      
Hallo zusammen,
ich habe mir aus ner Excel-Tabelle ne Matlab-Matrix - bestehend aus Strings und doubles - erstellt. Nun sollen aus Spalte 2 beispielsweise alle 'Annette' gefunden, die komplette Zeile kopiert und als neue Matrix(neues_Verzeichnis) erstellt werden.

Verzeichnis =
'Mayer' 'Brigitte' 170 65
'Mayer' 'Annette' 160 70
'Mueller' 'Brigitte' 155 60
'Mueller' 'Annette' 180 78

neues_Verzeichnis =
'Mayer' 'Annette' 160 70
'Mueller' 'Annette' 180 78

leider schlugen alle Versuche aus strfind und strcmp fehl.
Hat einer ne kluge Idee?

Vielen Dank im Vorraus!
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.2015, 23:41     Titel: Re: Suchen von Strings aus Matrix + Kopieren
  Antworten mit Zitat      
Hallo Piefke,

Zitat:
ne Matlab-Matrix - bestehend aus Strings und doubles

Matrizen enthalten in Matlab immer Daten des gleichen Types. Das wird dann also keine Matrix sondern ein Cell-Array sein. Der Unterschied ist bedeutend. Ich rate also mal:

Code:
Verzeichnis = { ...
  'Mayer'    'Brigitte'     170   65; ...
  'Mayer'    'Annette'    160   70; ...
  'Mueller'   'Brigitte'    155   60; ...
  'Mueller'   'Annette'   180   78};
match = strcmp(Verzeichnis(:, 2), 'Annette');
neues_Verzeichnis = Verzeichnis(match, :)


Zitat:
leider schlugen alle Versuche aus strfind und strcmp fehl.

Wann immer man hier im Forum "funktioniert nicht", "schlugen fehl" etc. schreibt, ist es notwendig, den dazugehörigen Code zu posten und zu erklären, ob die Ergebnisse nicht mit den Erwartungen übereinstimmen, oder ob es eine Fehlermeldung gab (und diese dann auch vollständig posten).
Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Piefke
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 3
Anmeldedatum: 19.09.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.09.2015, 09:06     Titel:
  Antworten mit Zitat      
Als Neuling war mir nicht bekannt, dass ich den fehlerhaften Code posten soll, dies bitte ich zu entschuldigen.

Der gesamte Aufbau der neuen Matrix war mir soweit nicht bekannt, hat aber dank Deines Codevorschlags geklappt, vielen Dank dafür.

Jetzt stellt sich als letzte Frage noch, ob die MarkerEdgeColor auf vektorielle Attribute zugreifen kann. Normalerweise erwartet sie doch plot(..., 'MarkerEdgeColor', 'red') beispielsweise. Ich habe in meinem Cell Array noch ne Spalte mit den Farben ('red', 'black',...) abgespeichert. Gibt es nicht die Möglichkeit wie folgend zu plotten:
plot(Tabelle(:,1), Tabelle(:,2), 'MarkerEdgeColor', Tabelle(:,5))?

Er meckert leider wie folgend:

Error using plot
Color value must be a 3 element vector

Error in Projekt1 (line 136)
plot(Ergebnisliste(:,10),Ergebnisliste(:,11), 'LineStyle', 'none', 'Marker', 'x', 'MarkerEdgeColor', Ergebnisliste(:,14));
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: 21.09.2015, 11:05     Titel:
  Antworten mit Zitat      
Hallo Piefke,

Gerne!

Bitte stelle pro Thread nur eine Frage. Ansonsten ist der "Beantwortet"-Status nicht mehr sinnvoll und man muss bei Antworten erstmal nachgrübeln, zu welcher Frage sie gehören. (Und keine Sorge: Du musst Dich nicht entschuldigen, es ist nicht trivial Fragen in einem Forum zu stellen. Jedes Forum hat so seine Sitten, da muss man sich halt erst mal dran gewöhnen.)

Zitat:
Der gesamte Aufbau der neuen Matrix...

Nochmal: Das sind keine "Matrizen", sondern Cell-Arrays. Das ist ein sehr wichtiger Unterschied. Ein 2D-Cell-Array ist zwar eine "Cell-Matrix", aber das Attribut "Cell" ist dabei von entscheidender Bedeutung. Es geht nicht darum, Rosinen zu spalten, sondern es kann Dich vor ein paar grundsätzlichen Programmier-Fehlern bewahren, wenn Dir der Unterschied klar ist.

Code:
plot(Tabelle(:,1), Tabelle(:,2), 'MarkerEdgeColor', Tabelle(:,5))?

Hier wäre es nun wieder wichtig, den Inhalt von "Tabelle" genau zu kennen.

Zitat:
Error using plot
Color value must be a 3 element vector

Error in Projekt1 (line 136)
plot(Ergebnisliste(:,10),Ergebnisliste(:,11), 'LineStyle', 'none', 'Marker', 'x', 'MarkerEdgeColor', Ergebnisliste(:,14));

Wie hängen nun "Tabelle" und "Ergebnisliste" zusammen? Das ist wahrscheinlich das gleiche, aber solche Abstraktionen erschweren es, eine Frage zu beantworten.

Ist "Ergebnislist" eine Matrix oder ein Cell-Array? In letzterem Fall wird nach dem Fixen des Farben-Problems eine weitere Fehlermeldung erscheinen, dass plot nicht mit Cell-Arrays funktioniert. Falls "Ergebnisliste" eine Matrix ist, was ist dann der Inhalt von "Ergebnisliste(:, 14)"?

Bitte poste Matlab-code, der die Inputdaten erzeugt (oder einen kleinen Pseudo-Datensatz), so dass wir dies per Copy&Paste im Commandwindow erzeugen können / könnten. Erst dann wird klar, was Dein PLOT-Befehl eigentlich tun soll.

Bitte lies Dir in der Dokumentation mal alles zu Cell-Arrays durch, was Du findest:
Code:

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Piefke
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 3
Anmeldedatum: 19.09.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 22.09.2015, 13:33     Titel:
  Antworten mit Zitat      
Um die (aus meiner Sicht) etwas komplexe Struktur erklären:
1. Es gibt ne Excel-Tabelle, aus der ich die Daten in ein Matlab-Cell-Array namens "Tabelle" importiere.
2. Aus dem Cell-Array "Tabelle" werden nun Daten nach der Firma (hiesiges Beispiel: Volvo) gefiltert und in das Cell-Array "Ergebnisliste" gespeichert.
3. Aus dem Cell-Array "Ergebnisliste" wird nun der Plot erstellt, x- & y-Koordinaten werden hierbei korrekt ausgelesen, bei der Wahl der Markerfarbe soll er auf die Ergebnisliste(:,14)) zurückgreifen.

Habe im Anhang nen Screenshot aufgenommen, damit das Problem bzw. die Fehlermeldung übersichtlicher wird. Die Fehlermeldung bezieht sich hierbei definitiv auf die Markerfarbe, denn wenn man dort anstelle des Verweises auf die Ergebnisliste nur 'black' oder 'red' eingibt, so wird ein fehlerloses Ergebnis geliefert.

Matlabproblem.jpg
 Beschreibung:

Download
 Dateiname:  Matlabproblem.jpg
 Dateigröße:  431.79 KB
 Heruntergeladen:  363 mal
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: 23.09.2015, 15:13     Titel:
  Antworten mit Zitat      
Hallo Piefke

Bist Du sicher, dass "Ergebnisliste" ein Cell-Array ist?! Der Screenshot sieht nicht so aus:
Zitat:
Ergebnisliste 5x14 dataset

Ich habe schon mal erwähnt, dass es bei der Programmierung grundlegend ist, den Typ einer Variable exakt zu verwenden und zu benennen Wink

Falls es doch ein Cell-Array wäre, und kein TABLE Objekt, bräuchtest Du geschweifte Klammern, keine runden.

Beim Deinem Screenshot wurde übrigens des wichtige Teil der Fehlermeldung abgeschnitten. Es fehlt genau der Teil, der den Fehler erklärt. Das macht die Hilfswilligem im Forum öfter mal nervös, weil sie so gerne helfen würden, aber gerade die wichtigste Information vorenthalten wird.
Poste Fehlermeldungen deswegen besser per Copy&Paste und vollständig. Du hattest ja vorher schon mal gepostet:
Zitat:
Color value must be a 3 element vector

Farbnamen wie 'black' oder 'red' sind nicht valide, zumindest nicht in den Matlab Versionen, die ich kenne. (Ich hinke ein wenig hinterher). Schaue Die mal die Dokumentation des plot Befehls an. Dort sind die akzeptierten Farb-Namen aufgelistet. 'r' und 'k' sind Abkürzungen für 'red' und 'black'. Die Fehlermeldung weist eher auf die RGB-Methode hin, also [1,0,0] und [0,0,0] für rot und schwarz.

Viele Grüße, 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.