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

Excel Tabelle automatisieren - ähnlichste Zeile finden

 

robby
Forum-Newbie

Forum-Newbie


Beiträge: 2
Anmeldedatum: 17.09.18
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.09.2018, 10:03     Titel: Excel Tabelle automatisieren - ähnlichste Zeile finden
  Antworten mit Zitat      
Hallo liebes Forum,

Ich habe eine Excel Tabelle bekommen mit vielen Einträgen (2000x80).
Nun muss ich die Zeile finden, die am ähnlichsten der InputZeile ist.

Ich habe hier eine kleinere Beispiel-Tabelle (20x5) erstellt.

Mit dem Code habe ich auch angefangen und vergleiche zunächst den InputWertA mit allen anderen Werten in Spalte A. Wenn A übereinstimmt soll in die Zelle an der Stelle die Zeilennummer geschrieben werden (Wert von i). Das gleiche mache ich dann für die Spalte mit Wert B. Am Ende vergleiche ich die beiden Spalten mit ismember und sehe wo in der Zelle Wert stehen habe ich eine Übereinstimmung.

Nun ich weiß nicht genau wie ich da weitermachen soll, es ist warscheinlich sehr Rechenleistungsintensiv das für die richtige ExcelDatei mit 2000 Zeilen und 80 Spalten anzuwenden.
Außerdem sollte das automatisch gehen und mir anzeigen welche die "ähnlichste" Zeile ist, bei der aktuellen "Lösung" muss ich theoretisch in die Tabelle gucken.
Habt Ihr da andere Lösungsansätze?

Code:
tic
[num,txt,raw] = xlsread('Beispiel.xlsx');
[nr,nc]=size(raw);
max = nr;                    %Anzahl der Zeilen in der Liste...Abfrage zum Herausfinden?
InputWertB = 'B1C1';
InputWertA = 'A1';
Array1 = zeros(nr,5);   %Arrays vorerstellen (5 Spalten - Bsp)
Array2 = zeros(nr,5);


 for i = 2:max
     
   
     if strcmp(InputWertB,raw{i,2})     %Abfrage WertB
         Array1(i,2) = i;
     end
     
     if strcmp(InputWertA,raw{i,1})     %Abfrage WertA
         Array2(i,1) = i;
     end
   
 end
[Lia,Locb] = ismember(Array1, Array2);     % Vergleich von Array1 und Array2 (noch zu verbessern)
toc


Vielen Dank schon mal im voraus.
Liebe Grüße,
robby
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: 17.09.2018, 11:52     Titel: Re: Excel Tabelle automatisieren - ähnlichste Zeile finden
  Antworten mit Zitat      
Hallo robby,

Die Frage ist noch nicht klar. Wie misst Du "ähnlich"?
Zum Glück ist 2000*80 nicht nennenswert groß für Matlab auf einem aktuellen Rechner.

Wie wäre:

Code:
tic
[num,txt,raw] = xlsread('Beispiel.xlsx');
InputWertB = 'B1C1';
InputWertA = 'A1';

Index = strcmp(raw(:, 1), InputWertA) & strcmp(raw(:, 2), InputWertB)
 

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

Forum-Newbie

Forum-Newbie


Beiträge: 2
Anmeldedatum: 17.09.18
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.09.2018, 12:19     Titel:
  Antworten mit Zitat      
Hallo Jan,

Danke für die schnelle Antwort.
Jede Zeile hat quasi eine Bewertungsstufe (1-5), die ich jz nicht in der Beispieltabelle eingefügt habe.
Die Zeilen haben alle Ähnlichkeiten. Ich muss mit der neuen Zeile schauen, welche von den alten Zeilen die meisten "Spaltenwerte" gleich hat. Also dadurch kann ich die Bewertungsstufe für die neue Zeile von den alten ableiten.
Wie viel Gewichtung ein Spaltenwert hat ist noch nicht genau definiert.

Ich habe mir vielleicht überlegt den verschiedenen Spaltenwerten bei Übereistimmung verschiedene Wert zuzuweisen wie z.B.: für WertA gebe ich 5 Punkte und für WertB 2, soll die Gewichtung realisieren. Die Zeile die dann die meisten Punkte hat ist dann quasi die Ähnlichste.

Dein Ansatz gefällt mir schon mal, schaut auf jeden Fall schicker aus als mein Codeblock.

Danke,
robby
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 - 2024 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.