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

Werte vergleichen, Zeile löschen

 

Harald
Forum-Meister

Forum-Meister


Beiträge: 24.448
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 13.05.2020, 17:49     Titel:
  Antworten mit Zitat      
Hallo,

bei mir nicht.
Vermutlich liegt das Problem daran, wie du das hier rein kopiert hast. Bitte tatsächliche .csv-Dateien anhängen; vorher zippen falls nötig.

Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen


Shucki
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 19
Anmeldedatum: 04.05.20
Wohnort: ---
Version: R2020a
     Beitrag Verfasst am: 13.05.2020, 21:30     Titel:
  Antworten mit Zitat      
Code:
Vermutlich liegt das Problem daran, wie du das hier rein kopiert hast. Bitte tatsächliche .csv-Dateien anhängen; vorher zippen falls nötig.


Das stimmt, sorry! Danke für deine Geduld.

Ich habe jetzt zwei Tabellen im ZIP-Ordner angehängt.

Grüße, Shucki

Tabellen.zip
 Beschreibung:

Download
 Dateiname:  Tabellen.zip
 Dateigröße:  956 Bytes
 Heruntergeladen:  186 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.448
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 14.05.2020, 09:11     Titel:
  Antworten mit Zitat      
Hallo,

ein Problem war noch, dass die zu vergleichenden Spalten in den beiden Tabellen leicht unterschiedlich heißen (cols1 vs. cols2, deswegen auch Umwandlung von Table in Array für ismember).

Ein Versuch:

Code:
T1 = readtable('Tabelle1.csv');
T2 = readtable('Tabelle2.csv');

d = diff(T1.report) == 0;
doppelt = [false;d] | [d; false];

cols1 = ["lac_tac_sid", "node_id_nid", "cid_bid", "cell_lat", "cell_long"];
cols2 = ["lac_tac", "node_id", "cid", "cell_lat", "cell_long"];

inT2 = ~ismember(table2array(T1(:, cols1)), table2array(T2(:, cols2)), "rows");
T1(doppelt & inT2, :) = []


Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
Shucki
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 19
Anmeldedatum: 04.05.20
Wohnort: ---
Version: R2020a
     Beitrag Verfasst am: 19.05.2020, 17:09     Titel:
  Antworten mit Zitat      
Hallo Harald,

Wow, vielen Dank! Das macht genau das, was ich wollte!

Eine weitere Frage von mir ist, mit welchem Befehl ich jetzt einen Zahlenwert aus Tabelle 1 mit einem Wert aus Tabelle 2 überschreibe, wenn lac_tac und node_id übereinstimmen.

Code:

cols1 = ["lac_tac_sid","node_id_nid");
cols2 = ["lac_tac","node_id"];

inSes = ismember(table2array(T1(:,mem1)), table2array(T2(:,mem2)),"rows");

T1(inSes, cell_lat) = ["T2.cell_lat"];
 


oder sowas in der Art?

Ich hatte auch noch die Idee eine join Variante mit keys zu benutzen, aber ich möchte ja keine neue Tabelle erstellen, sondern in der ersten Tabelle Werte ersetzen. Und dazu müssten glaube ich auch die Spalten gleich heißen.
Vielleicht hast Du ja einen Tipp für mich.

Grüße, Shucki
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.448
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 20.05.2020, 11:44     Titel:
  Antworten mit Zitat      
Hallo,

was ist mem1 und was ist mem2?

Vorschlag wäre etwas in der Art:

Code:
[inSes, locB] = ismember(table2array(T1(:,cols1)), table2array(T2(:,cols2)),"rows");

T1(inSes, "cell_lat") = T2(locB(inSes), "cell_lat");


Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
Shucki
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 19
Anmeldedatum: 04.05.20
Wohnort: ---
Version: R2020a
     Beitrag Verfasst am: 25.05.2020, 12:27     Titel:
  Antworten mit Zitat      
Hallo,

Zitat:
was ist mem1 und was ist mem2?

Das sollte cols1 und cols2 heißen.

Mir ist jetzt erst aufgefallen, dass beim Einlesen der Tabellen, vermutlich wegen readtable, die Daten abgeschnitten und abgerundet werden. Gibt es eine Möglichkeit das zu umgehen?

Grüße,
Shucki
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.448
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 25.05.2020, 13:08     Titel:
  Antworten mit Zitat      
Hallo,

das Abschneiden sollte nur eine Frage der Anzeige im Command Window bzw. im Variable Editor sein. Probier mal format long .

Falls das nicht weiterhilft, bitte genau sagen, bei welcher Datei etwas abgeschnitten wird und was.

Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
Shucki
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 19
Anmeldedatum: 04.05.20
Wohnort: ---
Version: R2020a
     Beitrag Verfasst am: 25.05.2020, 13:54     Titel:
  Antworten mit Zitat      
Hallo,

Zitat:
das Abschneiden sollte nur eine Frage der Anzeige im Command Window bzw. im Variable Editor sein. Probier mal format long .


Ok, mein Fehler. Danke!

Dein Vorschlag für das Überschreiben von Daten aus der zweiten Tabelle hat auch geklappt. Vielen Dank für die ganze Hilfe!

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

Forum-Anfänger

Forum-Anfänger


Beiträge: 19
Anmeldedatum: 04.05.20
Wohnort: ---
Version: R2020a
     Beitrag Verfasst am: 27.05.2020, 17:05     Titel:
  Antworten mit Zitat      
Hallo,

Ich möchte jetzt einen Wert berechnen, für den ich jeweils 4 Werte einer Zeile benötige und das Ergebnis dann in eine neue Spalte schreibe. Als für jede Zeile soll diese Berechnung durchgeführt und in die jeweilige Spalte geschrieben werden.

Code:
nrow = size(tbl, 1); %Anzahl der Zeilen
tbl.distance = zeros(nrow, 1);

latlon1 = ("tbl.lat","tbl.long")
latlon2 = ("tbl.cell_lat","tbl.cell_long")

(:,tbl.distance) = lldistkm("latlon1", "latlon2")


https://de.mathworks.com/matlabcent.....nge/38812-latlon-distance
Diese Funktion soll dafür benutzt werden, aber nur mit Ausgabe d1km.

So funktioniert das nicht und ich denke mal, dass ich falsch indiziere.

Grüße,
Shucki
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.448
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 27.05.2020, 17:14     Titel:
  Antworten mit Zitat      
Hallo,

stimmt, und ich verstehe nicht wirklich, was du da erreichen willst.
Vorschlag: ich habe dir ja bereits gezeigt, wie du an Teile von Tables herankommst. Setze dich doch da nochmal genauer mit auseinander?

Siehe auch hier:
https://de.mathworks.com/help/matla.....cess-data-in-a-table.html
Wichtig sind vor allem die Zeilen:
Array, extracting data from one variable
Array, concatenating data from specified rows and variables

Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
Shucki
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 19
Anmeldedatum: 04.05.20
Wohnort: ---
Version: R2020a
     Beitrag Verfasst am: 03.06.2020, 13:57     Titel:
  Antworten mit Zitat      
Hallo,

das war genau das, was ich gebraucht und einfach nicht gefunden habe.
Das hat mir super geholfen und bisher kriege ich jetzt auch alles hin.
Vielen Dank für all die Tipps und deine Hilfe!

Liebe Grüße, Shucki
Private Nachricht senden Benutzer-Profile anzeigen
 
Shucki
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 19
Anmeldedatum: 04.05.20
Wohnort: ---
Version: R2020a
     Beitrag Verfasst am: 17.06.2020, 11:31     Titel:
  Antworten mit Zitat      
Hallo,

ich würde meine Tabelle jetzt gerne als neue csv abspeichern und möchte dafür einen Teil des Namens der eingelesenen Datei verwenden. Ich bekomme es leider nicht hin und habe nirgends etwas dazu gefunden.

Es sieht wie folgt aus:
Code:

name = ['Sync' str(8:end)]

writetimetable(ttLinear, "name.csv", 'Delimiter',',','QuoteStrings',true)
 


Ich würde die Datei gerne mit dem Namen aus 'name' abspeichern.

Grüße,
Shucki
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.448
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 17.06.2020, 11:51     Titel:
  Antworten mit Zitat      
Hallo,

falls der Dateiname die Endung noch nicht enthält:
Code:
writetimetable(ttLinear, name + ".csv", 'Delimiter',',','QuoteStrings',true)

falls schon:
Code:
writetimetable(ttLinear, name, 'Delimiter',',','QuoteStrings',true)


Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
Shucki
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 19
Anmeldedatum: 04.05.20
Wohnort: ---
Version: R2020a
     Beitrag Verfasst am: 24.06.2020, 12:41     Titel:
  Antworten mit Zitat      
Hallo!

Danke!

Jetzt möchte ich die Datei in einem Unterordner abspeichern.

Code:

dataname = ['Sync' strAirdata(8:end)] + ".csv";
   
writetimetable(ttLinear, [pwd '/SyncData/dataname'], 'Delimiter',',','QuoteStrings',true)
 


Wenn ich es so schreibe, benennt er die Datei dataname. Ich habe nicht herausfinden können, wie es schaffe, dass er die Datei mit dem richtigen Namen im Ordner abspeichert.

Code:

writetimetable(ttLinear, ['Sync' strAirdata(8:end)] + ".csv", 'Delimiter',',','QuoteStrings',true)
 

Wenn ich es in keinen Unterordner speicher, funktioniert es so mit dem richtigen Namen.

Viele Grüße,
Shucki
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.448
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 25.06.2020, 11:15     Titel:
  Antworten mit Zitat      
Hallo,

Code:
writetimetable(ttLinear, [pwd '/SyncData/'] + dataname, 'Delimiter',',','QuoteStrings',true)


Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen

Gehe zu Seite Zurück  1, 2, 3  Weiter

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.