|
|
Suchen von Strings aus Matrix + Kopieren |
|
Piefke |

Forum-Newbie
|
 |
Beiträge: 3
|
 |
|
 |
Anmeldedatum: 19.09.15
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 20.09.2015, 00:13
Titel: Suchen von Strings aus Matrix + Kopieren
|
 |
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!
|
|
|
|
|
Jan S |

Moderator
|
 |
Beiträge: 11.057
|
 |
|
 |
Anmeldedatum: 08.07.10
|
 |
|
 |
Wohnort: Heidelberg
|
 |
|
 |
Version: 2009a, 2016b
|
 |
|
|
 |
|
Verfasst am: 20.09.2015, 23:41
Titel: Re: Suchen von Strings aus Matrix + Kopieren
|
 |
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:
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
|
|
|
Piefke |
Themenstarter

Forum-Newbie
|
 |
Beiträge: 3
|
 |
|
 |
Anmeldedatum: 19.09.15
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 21.09.2015, 09:06
Titel:
|
 |
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));
|
|
|
Jan S |

Moderator
|
 |
Beiträge: 11.057
|
 |
|
 |
Anmeldedatum: 08.07.10
|
 |
|
 |
Wohnort: Heidelberg
|
 |
|
 |
Version: 2009a, 2016b
|
 |
|
|
 |
|
Verfasst am: 21.09.2015, 11:05
Titel:
|
 |
|
 |
|
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.
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:
Gruß, Jan
|
|
|
Piefke |
Themenstarter

Forum-Newbie
|
 |
Beiträge: 3
|
 |
|
 |
Anmeldedatum: 19.09.15
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 22.09.2015, 13:33
Titel:
|
 |
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.
Beschreibung: |
|
 Download |
Dateiname: |
Matlabproblem.jpg |
Dateigröße: |
431.79 KB |
Heruntergeladen: |
363 mal |
|
|
|
Jan S |

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