Verfasst am: 24.02.2017, 15:59
Titel: Einlesen von Daten, spalten und in Cell Array schreiben
Moin moin,
Ich habe folgendes Problem:
Ich habe einen Spaltenvektor mit 30000 Werte, die gruppenweise angeordnet sind und immer wieder vorkommen.
z.B.
X=[1;1;1;1;1;1;7;7;7;7;3;3;3;4;4;4;4;1;1;1;..... so mit 20 unterschiedlichen Werten.
Ich muss von diesem Vektor bestimmte Werte herausfiltern, da ich mit denen noch arbeiten muss. Die restlichen Werte sollen nicht mehr angezeigt werden.
z.B: aus X brauche ich die 1, die 7 und die 3.
danach muss jede Gruppe aus "wichtigen Werten" in ein Array eingeschrieben werden und jedes Mal, dass einen wichtigen Wert oder Gruppe von wichtigen Werten taucht eine neue Zeile erzeugen.
Bis jetzt kann ich nur die Werten finden aber nicht Gruppenweise in meinen Array einschreiben.
Ich hoffe mir kann jemand helfen.
Danke schon mal für jegliche Hilfe
Verfasst am: 25.02.2017, 20:33
Titel: Re: Einlesen von Daten, spalten und in Cell Array schreiben
Hallo fuquec1y,
Was bedeutet genau "herausfiltern" und "nicht mehr angezeigt werden?
Wie soll das "gruppenweise in ein Array schreiben" genau aussehen? Möchtest Du die Start.Indices ubnd End-Indices der Sequencen bekommen? Oder ein Cell-Array mit den Werten?
Wie sähe für den gezeigten Vektor der gewünschte Output aus?
Mit herausfiltern meine ich, dass ich nur die benötigten Werten haben will.
mit nicht mehr angezeigt werden, dass die gelöscht werden können.
Am besten machst du dir ein Bild von dem ganzen, indem du die txt-Datei anguckst, wo die Spalte 8 ich als meinen Vektor bezeichnet habe.
Code:
%
% Open a file dialog for choosing the NC Program file [PrgName,PrgPath,PrgFilterIndex] = ... uigetfile({'*.txt' 'NC-Program'; '*' 'All Files'},'Select the NC program file',pwd);
% Read the points from file
pointsNC = dlmread([PrgPath '/' PrgName], '');
bis jetzt habe ich alle Werte getrennt und in ein Cell Array eingeschrieben, mir gelingt aber immer noch nicht die unwichtigen Werte so zu löschen/ignorieren, dass die entstandenen Gruppen mit den wichtigen Werten so bleiben, wie sie gerade sind.
bis jetzt habe ich alle Werte getrennt und in ein Cell Array eingeschrieben, mir gelingt aber immer noch nicht die unwichtigen Werte so zu löschen/ignorieren, dass die entstandenen Gruppen mit den wichtigen Werten so bleiben, wie sie gerade sind.
Am Ende muss ich die wichtigen Zeilen, die an die Werten verbunden sind wieder in ein txt- Datei haben, damit die von einer CNC Maschine gelesen werden können.
Wenn du dir meine Datei angeguckt hast, merkst du, dass ich die Spalte 8 benutze, um an den Koordinaten-punkten, die ich brauche, zu kommen.
vielleicht wenn ich das Beispiel erweitere ist das ein bisschen deutlicher(hoffe ich).
X = [ 1;1;1;1;1;1;7;7;7;7;3;3;3;4;4;4;4;5;5;5;9;9;9;9;9;9;1;1;1;1;1;7;7;7;7;3;3;6;6;6;6;7;7;3;3;3;3]
wo, die wichtige Werten die 1 die 3 und die 7 sind
am ende sollte in jeder Zeile meiner Cellarray eine Gruppe von Werten sein, die mich interessieren.
Zeile 1: 1;1;1;1;1;1;7;7;7;7;3;3;3
Zeile 2: 1;1;1;1;1;7;7;7;7;3;3
Zeile 3: 7;7;3;3;3;3
kann sein, dass mein Ansatz schon falsch ist? und man es anders machen muss?
Gruß,
Carlos
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 27.02.2017, 17:36
Titel:
Ich glaube damit sollte es funktionieren. Gibt sicherlich schönere Lösungen, aber vielleicht besser als nichts.
Code:
X = [1;1;1;1;1;1;7;7;7;7;3;3;3;4;4;4;4;5;5;5;9;9;9;9;9;9;1;1;1;1;1;7;7;7;7;3;3;6;6;6;6;7;7;3;3;3;3];
idx_isnan = find(~isnan(X));
n = 1;
for k = 1:length(idx_isnan)-1 if idx_isnan(k+1,1) - idx_isnan(k,1) == 1
M{n,1}(k,1) = X(idx_isnan(k,1));
M{n,1}(k+1,1) = X(idx_isnan(k+1,1));
else
n = n+1;
end end
for k = 1:length(M)
M_hilf{k,1} = M{k,1} > 0;
M{k,1} = M{k,1}(M_hilf{k,1});
end
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
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.