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

Einlesen von Daten, spalten und in Cell Array schreiben

 

fuquec1y
Forum-Newbie

Forum-Newbie


Beiträge: 4
Anmeldedatum: 23.02.17
Wohnort: Bochum
Version: matlab R2016a
     Beitrag Verfasst am: 24.02.2017, 15:59     Titel: Einlesen von Daten, spalten und in Cell Array schreiben
  Antworten mit Zitat      
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
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: 25.02.2017, 20:33     Titel: Re: Einlesen von Daten, spalten und in Cell Array schreiben
  Antworten mit Zitat      
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?

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

Forum-Newbie

Forum-Newbie


Beiträge: 4
Anmeldedatum: 23.02.17
Wohnort: Bochum
Version: matlab R2016a
     Beitrag Verfasst am: 25.02.2017, 22:46     Titel:
  Antworten mit Zitat      
Hallo Jan,

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], '');

 
% % Do something with the points here

m32=pointsNC(:,8)==32;
m31=pointsNC(:,8)==31;
m35=pointsNC(:,8)==35;
m26=pointsNC(:,8)==26;
m7=pointsNC(:,8)==7;
m30=pointsNC(:,8)==30;
m24=pointsNC(:,8)==24;
m23=pointsNC(:,8)==23;
m25=pointsNC(:,8)==25;
o=m32+m31+m35+m26+m7+m30+m24+m25;
 newVal = find(diff(o(:,:)) ~= 0);
 rowCounts = diff([0; newVal; size(o,1)]);
 c = mat2cell(pointsNC(:,8),rowCounts,1);
 d=mat2cell(pointsNC(:,[1,2,3,4,5,6,7,9]),rowCounts,8);
 pointsNC_1=[c d];

 

 
% Print to CSV file (ID X Y Z NX NY NZ)

% Let's plot it
figure
scatter3(0, 0, 0, 'DisplayName', 'Base Frame');
hold on; grid on; grid minor; axis equal
title('Tool Path')
xlabel('X')
ylabel('Y')
zlabel('Z')

scatter3(pointsNC(:,2),pointsNC(:,3),pointsNC(:,4),'+','MarkerEdgeColor','r','DisplayName', 'NC Tool Path');

legend('show');

 


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.

AdaptiveScallopHeight - MillPartSetup01 - 015 - Geometry Mill 015 - 2017-2-16 - 10-1-48.txt
 Beschreibung:

Download
 Dateiname:  AdaptiveScallopHeight - MillPartSetup01 - 015 - Geometry Mill 015 - 2017-2-16 - 10-1-48.txt
 Dateigröße:  3.45 MB
 Heruntergeladen:  553 mal
flaechen-ids.png
 Beschreibung:

Download
 Dateiname:  flaechen-ids.png
 Dateigröße:  106.9 KB
 Heruntergeladen:  275 mal
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: 26.02.2017, 19:13     Titel:
  Antworten mit Zitat      
Hallo fuquec1y,

Zitat:
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.

Mir ist es noch nicht klar, was das bedeutet.

Hier m,al eine Vereinfachung des Codes:
Code:
match = ismember(pointsNC(:, 8), [32, 31, 35, 26, 7, 30, 24, 23, 25]);

Und jetzt?
Welches Ergebnis möchtest Du für dies bekommen:
Code:
X = [1;1;1;1;1;1;7;7;7;7;3;3;3;4;4;4;4;1;1;1]

?

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

Forum-Newbie

Forum-Newbie


Beiträge: 4
Anmeldedatum: 23.02.17
Wohnort: Bochum
Version: matlab R2016a
     Beitrag Verfasst am: 26.02.2017, 21:08     Titel:
  Antworten mit Zitat      
Hallo Jan,

erstmal vielen Dank für die Vereinfachung!!

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
Private Nachricht senden Benutzer-Profile anzeigen
 
Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 27.02.2017, 17:36     Titel:
  Antworten mit Zitat      
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];

X(X~=1 & X~=3 & X~=7) = NaN;

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


Viele Grüße
 
fuquec1y
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 4
Anmeldedatum: 23.02.17
Wohnort: Bochum
Version: matlab R2016a
     Beitrag Verfasst am: 27.02.2017, 18:09     Titel:
  Antworten mit Zitat      
genau so muss das aussehen !
vielen Dank!!
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.