|
|
Cell Arrays vergleichen und ersetzen |
|
Senraphil |

Forum-Fortgeschrittener
|
 |
Beiträge: 51
|
 |
|
 |
Anmeldedatum: 16.04.14
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 04.08.2014, 09:57
Titel: Cell Arrays vergleichen und ersetzen
|
 |
|
 |
|
Hallo zusammen,
folgender sachverhalt hat sich ergeben:
Ich lese zunächst eine Excel-Datei mit xlsread ein. Dabei wird [num,txt,raw] erstellt. [raw] ist für meine spätere Frage die Zielvariable. Zunächst stelle ich in der Variable [num] verschiedene Berechungen an. Die Ausgangsvariable [num] hat zunächst 564 Zeilen und wird auf rund 200 Zeilen durch meine Berechungen reduziert. Anschließend wandle ich diese Variable auch in cell array um.
So nun zu meinem Problem: Ich möchte die eingetragenen Werte zweier bestimmter Spalten miteinander vergleichen. Variable [raw] hat 575x24 cells und Variable [num] 200x22 cells.
Nun zum Kern:
Ich möchte aus Variable [num] die Werte in der Spalte 1 mit den Werten der Variable [raw] aus Spalte 3, Zeile 3:end vergleichen. Wenn ein Wert aus Variable [num] Spalte 1 in Variable [raw] Spalte 3, Zeile 3:end vorkommt, soll die Zeile der Varaible [raw] ab Spalte 3, in der übereinstimmende Wert steht, durch die komplette Zeile des übereinstimmenden Wertes der Variable [num] ersetzt werden.
Ist das generell möglich und wenn ja wie? Ich hoffe mir kann jemand behilflich sein. Vielen Dank.
Gruß
Senraphil
|
|
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.499
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 04.08.2014, 10:24
Titel:
|
 |
Hallo,
das ist sicher möglich, allerdings verliere ich mich in der wortreichen Beschreibung des "Kerns".
Überprüfen, ob (und wo) ein Wert in einem Array enthalten ist:
Bitte die Beschreibung möglichst mit Code bzw. in MATLAB-Notation oder anhand eines konkreten Beispiels angeben.
Grüße,
Harald
|
|
|
Senraphil |
Themenstarter

Forum-Fortgeschrittener
|
 |
Beiträge: 51
|
 |
|
 |
Anmeldedatum: 16.04.14
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 04.08.2014, 11:54
Titel:
|
 |
Ok. Dann am besten ein kurzes Beispiel:
Das ist die in einen cell array gewandelte Variable [num]
Die Variable [raw] sieht wie folgt aus:
Nun möchte ich vergleichen, ob der Wert num_cell(1,1) der gleiche Wert ist, wie raw(3,3). Wenn ja soll Zeile 3 in [raw] ab der 3. Spalte durch die Werte der Zeile von [num_cell] ersetzt werden. In dem hier beschriebenen Beispiel würde sich nichts ändern. trotzdem brauche ich diesen Schritt.
Ich hoffe mein Problem st nun besser verständlich.
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.499
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 04.08.2014, 12:33
Titel:
|
 |
Hallo,
wo genau ist dabei denn das Problem?
Grüße,
Harald
|
|
|
Senraphil |
Themenstarter

Forum-Fortgeschrittener
|
 |
Beiträge: 51
|
 |
|
 |
Anmeldedatum: 16.04.14
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 04.08.2014, 12:51
Titel:
|
 |
Problem ist, dass ich das nicht für den ganzen Datensatz hinbekomme.
Er bringt mir ständig die Fehlermeldung: "Index exceeds matrix dimension".
Ich dachte da an eine for-Schleife, um das für den ganzen Datensatz abzuprüfen:
Es ist auch ein Problem, dass der Wert in num_cell(5,1) bei der Variable [raw] erst in (10,3) kommt oder gleichen. Das rafft das Programm dann nicht und macht einfach gar nichts.
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.499
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 04.08.2014, 13:04
Titel:
|
 |
Hallo,
wenn du == verwendest, werden eben genau diese beiden auf Gleichheit getestet. Daher hatte ich dir ja ismember vorgeschlagen.
Was soll für das Beispiel denn letztlich herauskommen? Da sollte raw doch gar nicht verändert werden, oder? Hilfreich wäre ggf. ein Beispiel, in dem man Veränderungen sieht.
Eine ganz andere Frage wäre, ob dieses mühevolle Arbeiten mit den drei Outputs von xlsread in der Form überhaupt nötig ist. Eine schöne Alternative dazu ist oft das Arbeiten mit Tables (ab Release R2013b) oder, falls du mit einem früheren Release arbeitest, Dataset Arrays (aus der Statistics Toolbox).
Grüße,
Harald
|
|
|
Senraphil |
Themenstarter

Forum-Fortgeschrittener
|
 |
Beiträge: 51
|
 |
|
 |
Anmeldedatum: 16.04.14
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 04.08.2014, 13:23
Titel:
|
 |
Hallo,
wie gesagt, wenn ich das ganze in eine Schleife packe und mit ismember abfrage, kommt zwar kein Fehler, aber Matlab macht auch nichts.
Mein Code:
Mit Tables zu arbeiten ist ne schöne Idee, allerdings habe ich nur die Version R2009b und die Statistic Toolbox habe ich noch nicht verwendet.
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.499
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 04.08.2014, 13:31
Titel:
|
 |
Hallo,
Zitat: |
kommt zwar kein Fehler, aber Matlab macht auch nichts. |
... weil du nur die k-ten Elemente vergleichst. Ich würde eher an sowas denken:
(bitte möglichst durchgängig dieselben Variablennamen verwenden)
Zitat: |
allerdings habe ich nur die Version R2009b |
Bitte diese Info in dein Profil aufnehmen, damit man das berücksichtigen kann.
Zitat: |
und die Statistic Toolbox habe ich noch nicht verwendet |
Wenn du die Toolbox hast und die Daten eine tabellarische Form haben, dann wäre doch jetzt ein guter Zeitpunkt, damit anzufangen ;)
Bitte noch eingehen auf:
Zitat: |
Was soll für das Beispiel denn letztlich herauskommen? Da sollte raw doch gar nicht verändert werden, oder? Hilfreich wäre ggf. ein Beispiel, in dem man Veränderungen sieht. |
Numerische Daten dabei möglichst mit . als Dezimaltrennzeichen, damit man leichter nach MATLAB kopieren kann.
[/quote]Grüße,
Harald
|
|
|
|
|
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.
|
|