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

Komplette Zeilen aus einem Cell-Array extrahieren

 

AnoNym
Forum-Newbie

Forum-Newbie


Beiträge: 6
Anmeldedatum: 22.05.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 22.05.2013, 20:24     Titel: Komplette Zeilen aus einem Cell-Array extrahieren
  Antworten mit Zitat      
Hallo Zusammen,

heute Mittag hatte ich bereits einen ähnlichen Topic gestartet, ich muss aber noch mehr ins Detail gehen. Es geht bei darum:

Ich lese eine Exelfile mit xlsread ein. Ich verwende den als "raw" bezeichneten Cell Array, der bei einlesen generiert wird. Das sieht undgefähr so aus (Frei erfunden)

Karl =
[21] [Text] [68]
[12] [Text] [41]
[77] [Text] [16]
[46] [Text] [57]
[73] [Text] [95]
[11] [Text] [96]
[44] [Text] [99]
[56] [Text] [84]
[86] [Text] [66]
[92] [Text] [87]

Ich möchte nun jeweils den wert aus der ersten Spalte finden , z.B. die 21 und dann die dazu gehörige Zeile extrahieren, so dass am Ende folgendes ausgegeben wird:
21 Text 68.
Es genügt hier aber nicht, nur die Spalte mittels eines Befehls abzusondern, sondern es muss mittels Suchbefehl erfolgen, das ich die Prozedur auf mehrere Sheets (mit den gleichen Werten in der ersten Spalte) anwenden möchte. Wie mache ich das am besten?
Habe es mit cell2mat und dann find probiert, das funktioniert, ist aber sehr umständlich. Wie würde das mit einer for-Schleife aussehen?? Bitte helft mir, ich bin blutiger matlab-Anfänger Embarassed Ich denke das Problem ist sehr trivial, aber ich habe leider keine Ahnung Embarassed
Lieben Dank schonmal im Voraus!!
LG
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: 22.05.2013, 22:11     Titel:
  Antworten mit Zitat      
Hallo,

Zitat:
Habe es mit cell2mat und dann find probiert, das funktioniert, ist aber sehr umständlich.

Wenn du diesen Versuch noch postest, wird es deutlich leichter, zu helfen.

Wieso verwendest du (nur) den raw-Teil? Mit den getrennten Daten lässt sich deutlich leichter arbeiten, zumindest solange die Grobstruktur der Excel-Datei bekannt ist.

Ich würde es so machen:
Code:
idx = (cell2mat(Karl(:,1)) == 21);
Zeilen = Karl(idx,:);


Ich kann mir nicht vorstellen, dass das mit for-Schleifen einfacher ginge.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
AnoNym
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 6
Anmeldedatum: 22.05.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 23.05.2013, 10:09     Titel:
  Antworten mit Zitat      
Hallo nochmal

Vielen Dank schonmal:)

jetzt habe ich es so gelöst:
Code:

[a0,a1, Karl]= xlsread('Datei') ;
Karl(1,:) = [];
se_var=46 %Beispiel für gesuchten Wert;
for k=1:length(Karl);
   B{k}= find(Karl{k}==se_var)
   B=B'
end;


Das klappt super, jetzt muss er mir nur noch die ganze Zeile "ausspucken2
Wie krieg ich das hin?

Besten Gruss
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: 23.05.2013, 10:16     Titel:
  Antworten mit Zitat      
Hallo,

du verwendest hier 4 Zeilen, deren Sinn ich teilweise nicht nachvollziehen kann, um etwas zu erreichen, was ich in einer Zeile geschafft habe.

Vor allem ist B aber nun ein Cell Array, was für die weitere Arbeit denkbar ungünstig ist, während man bei meiner einen Zeile idx bequem als Zeilenindex verwenden kann.

Ich verstehe also nicht, warum du auf einer for-Schleife bestehst anstatt den einfachen Weg zu gehen.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
AnoNym
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 6
Anmeldedatum: 22.05.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 23.05.2013, 10:27     Titel:
  Antworten mit Zitat      
Hallo Harald,
Du hast recht, ich beides nochmal durchprobiert....werde bei Deiner Lösung bleiben...

LG
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.