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

Matrix bearbeiten

 

kevka
Forum-Newbie

Forum-Newbie


Beiträge: 4
Anmeldedatum: 20.04.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.04.2016, 09:59     Titel: Matrix bearbeiten
  Antworten mit Zitat      
Hallo,

ich habe eine Frage bezüglich der Reduzierung von Excel-Tabellen.

Ich habe eine Exceldatei mithilfe von xlsread eingelesen und möchte nun folgendes tun und zwar habe eine Spalte mit bestimmen Energieträgern : "Windkraft" "Solarkraft" "Pumpspeicher" usw.

Nun möchte ich nur noch alle Zeilen haben die etwas mit dem Wort "Windkraft" zu tun haben.

Mein Ansatz war erstmal mit strcmp das Wort "Windkraft" zu filtern , aber nun weiß ich nicht wie ich weiter vorangehen soll dass ich nur noch die zeilen habe in denen das Wort "Windkraft" enthalten ist.

Zum anderen wollte ich noch fragen wie ich eine Zeile komplett entfernen kann.

Viele Grüße

Kevin
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: 20.04.2016, 10:56     Titel: Re: Matrix bearbeiten
  Antworten mit Zitat      
Hallo kevka,

Zitat:
Ich habe eine Exceldatei mithilfe von xlsread eingelesen...

Wovon möchtest Du eine Zeile entfernen? Aus dem File oder aus den Daten?
Die Daten liegen als CELL vor. Die Information, dass es um ein Excel-File geht ist deshalb eigentlich nur verwirrend, oder?

Zitat:
Nun möchte ich nur noch alle Zeilen haben die etwas mit dem Wort "Windkraft" zu tun haben.

Was heißt "zu tun haben" genau?

Ih vermute ~cellfun('isempty', strfind(DataCell)) wird Dir weiter helfen.

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

Forum-Newbie

Forum-Newbie


Beiträge: 4
Anmeldedatum: 20.04.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.04.2016, 11:03     Titel:
  Antworten mit Zitat      
Hi Jan,
ich habe das mithilfe [~,~,A]=xlsread('...') eingelesen

gibt es die Möglichkeit, wenn ich das innerhalb von MatLab lösche und es später als eine csv. datei exportiere?

Ich meine das so, ich habe mehrere Spalten, und in der einen stehen die Energieträger.

Und mein Ziel ist es dass ich nur noch die Zeilen übrig habe , wo ich das Wort Windkraft drin habe

und wie du auf dem screenshot sehen kannst, würde ich gerne die ersten 3 Zeilen komplett entfernen.

Bin noch ein Neuling mit MatLab.


Gruß Kevin

MatLab.jpg
 Beschreibung:

Download
 Dateiname:  MatLab.jpg
 Dateigröße:  518.29 KB
 Heruntergeladen:  294 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
kevka
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 4
Anmeldedatum: 20.04.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.04.2016, 14:23     Titel:
  Antworten mit Zitat      
Sorry für den Doppelpost,
hatte mir vom code her erstmal was ganz einfaches überlegt, kann man das so als Ansatz nehmen?

Es gibt nämlich noch eine Spalte in der beschrieben wird, ob das Objekt ( hier Erzeugungsanlage) 'OK' ist und wenn dies der Fall möchte ich die Zeile behalten, ansonsten löschen

Code:
%
for i=1:1:1048567
if (isempty(strmcp(B(:,23),'OK')) == 0
B(i,:)=[]
end
end
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: 20.04.2016, 14:47     Titel:
  Antworten mit Zitat      
Hallo kevka,
Zitat:
gibt es die Möglichkeit, wenn ich das innerhalb von MatLab lösche und es später als eine csv. datei exportiere?

Das funktioniert.

Zitat:
Ich meine das so, ich habe mehrere Spalten, und in der einen stehen die Energieträger.

Und ist Dir die Position der gewünschten Spalte bekannt? Falls ja, welche ist es denn? Je mehr Details Du erklärst, desto passender und einfacher ist eine Antwort.

Zitat:
und wie du auf dem screenshot sehen kannst, würde ich gerne die ersten 3 Zeilen komplett entfernen.

Das kann ich auf dem Screenshot nicht erkennen.

Zitat:
Es gibt nämlich noch eine Spalte in der beschrieben wird, ob das Objekt ( hier Erzeugungsanlage) 'OK' ist und wenn dies der Fall möchte ich die Zeile behalten, ansonsten löschen


Der gepostete Code wird nicht das tun, was Du erwartest. Du vergleichst in jeder Iteration die Spalte 23 des Cells "B". Als Rückgabe erhältst Du einen Vektor mit 0 und 1 jenachdem ob der String 'OK' war oder nicht. Dieser Vektor ist niemals leer, denn er enthält ja 0 und 1 Werte.

Versuche mal dies:
Code:
index = strmcp(B(:,23),'OK');
B = B(index, :);


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

Forum-Newbie

Forum-Newbie


Beiträge: 4
Anmeldedatum: 20.04.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.04.2016, 15:02     Titel:
  Antworten mit Zitat      
Hi Jan,
das was du mir geschrieben hat mich definitiv einen Schritt Näher gebracht.
Kann man auch bei dem Code den du mir geschrieben hast ab Zeile 4 die Spalte 23 vergleichen?

die andere Spalte die ich meinte mit den Energieträgern ist die Zeile 7, jedoch müsste es ja dort mit dem Wort 'Windkraft' analog zu deinem funktionieren oder ?

Um nochmal zu erklären was ich im allgemeinen meine ist :
Ich habe bei dieser Tabelle 23 Spalten, das mit dem Zeilen löschen hat soweit geklappt so wie du es mir geschrieben, nur wie lösche ich jetzt z.B die erste Spalte? Da steht nämlich nur ein Datum und das ist für meine Auswertung irrelevant

der code :
Code:
%
for i=1:1:9468
B(i,1)=[]
end

Funktioniert nicht "A null assignment can have only one non-colon index."

und der hier
for i=1:1:9468
B(i,1)=0
end

sagt das hier "Conversion to cell from double is not possible."
 


Mein Hauptziel ist es , das was man mit Excel sowieso machen kann, beispielsweise eine Spalte die ich nicht brauche oder etwas rausfiltern anhand eines Wortes, dies mit MatLab durchzuführen um ein gewisses Gefühl für das Programm zu bekommen.

Ich habe zwar mal einen Grundlagenkurs besucht, aber wenn man keine Routine sammelt vergisst man wieder alles, deswegen bitte ich dich die banalen Fragen zu entschuldigen.

Gruß
Kevin
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.