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

Schneiden von Variablen (.txt)und Erstellung neuer Variablen

 

Benito

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 05.04.2016, 14:46     Titel: Schneiden von Variablen (.txt)und Erstellung neuer Variablen
  Antworten mit Zitat      
Hallo Ich habe folgenden Code bisher:

Code:

for n=1:3949 % falls mögich von Anfang bis Ende a durchlaufen lassen
    if (a (n,4)== -10) % so bald Spalte 4 = -10 wird x = 0 gesetzt
        x=0;
    else
        x= n/200; % Zeit angabe
    end
    if (x ==0) % hier müsste hin das die Daten in eine neue Variable geschrieben wird
       
    else
        fprintf ('f = a'); % sollte eigentlich die Daten von a bis zum ersten -10 wert in f schreiben.
    end
end


Meine Probelmatik ist folgende:
Ich habe eine double Variable deren Größe variiert (in diesem Fall 3949 * 19)
Sobald Spalte 4 den Wert -10 besitzt soll die Variable geschnitten werden, und ab dem Moment ab dem sie nicht mehr -10 ergibt soll eine neue Variable gestartet werden. Das ganze sind Bildkoordinaten (roh)....
Vielleicht gibt es da ja eine einfache Möglichkeit?
Und wenn wir dabei sind wäre eine andere Fragestellung die das ganze deutlich besser automatisieren würde:
Ich lese eine .txt Datei (die Rohkoordinaten) ein, lasse sie nach der oben beschrieben Regel schneiden und erhalte mehrere .txt Dateien mit den entprechenden Zeitstempeln (sind bei den Rohkoordinaten dabei)
Bei den Text datein einlesen komme ich nicht weiter als einlesen danach geht es nicht wirklich weiter da ich den eingelesene .txt nicht in eine Variable bekomme.
Code:
A = fopen ('test.txt' , 'r'); % Einlesen Datensatz
B = fopen ('Ausgabe.txt' , 'w'); % zu erstellender Datensatz
c = fscanf (A ,'%f \n'); % erstellen der zu bearbeitenden Martix
% danach sollte die Regel hin das leere Zellen mit -10 gefüllt werden und dann die oben beschriebenen schneide/neuerstellungs regeln

Vielleicht kann mir ja jemand helfen komme einfach nicht darauf wie die Variable in einzelnte Teile zu teilen geht.
bei

Test_Koordinaten.txt
 Beschreibung:
Hier wäre die .txt datei die ich einlesen müsste (im Beispiel oben wird sie als Variable a (0 Stellen durch -10 ersetzen) bereits in MatLab importiert verwendet)

Download
 Dateiname:  Test_Koordinaten.txt
 Dateigröße:  762.44 KB
 Heruntergeladen:  442 mal


Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 05.04.2016, 17:18     Titel: Re: Schneiden von Variablen (.txt)und Erstellung neuer Varia
  Antworten mit Zitat      
Hallo Benito,

Das sind zwei Fragen. Es ist sinnvoll immer nur eine Frage pro Thread zu stellen. Ich beantworte zunächst die erste.

Was bedeutet "eine neue Variable"? Einen Haufen von Variablen "a1" bis z.B. "a100" dynamisch zu erstellen wäre eine sehr schlechte Idee, denn man benötigt dann hinterher noch kompliziertere Methoden um heraus zu finden bis zu welchem Wert die Variablen existieren.
Also packt man die Abschnitte z.B. in ein Cell-Array.

Code:
Cut = [1, find(a(:, 4) == -10), size(a,1)+1];
nCut = numel(Cut);
x = cell(1, nCut);
for iCut = 1:nCut
  x{iCut} = a(Cut(iCut):Cut(iCut+1)-1);
end

Was soll mit den Elementen an den Grenzen passieren?

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Benito

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 05.04.2016, 18:02     Titel:
  Antworten mit Zitat      
Hallo Jan,
Danke für die schnelle Rückmeldung das mit der cut funktion ist ja prima Very Happy damit werde ich auf jedenfall auch noch bissl rumprobieren.
Die Werte an den Rändern sollen dort wo zuerst die -10 auftaucht in die neue Variable eingebaut werden.
Vielleicht auch nochmal kurz zur Erklärung ist vielleicht nicht ganz klar geworden.
Ich habe einen Datensatz der importiert in Matlab als Double dargestellt wird diese Variable nenne ich a und hat 3494*19 Datenfelder, aus diesen Datenfeldern benötige ich zusammenhängende Teile, a1 soll vom ersten Feld bis zum letzten Feld bevor die -10 auftaucht gehen.
a2 beginnt dann ab der Zeile in der keine -10 mehr in Spalte 4 vorkommt und geht wiederum bis zur letzten Zeile vor einem erneuten auftreten von -10 ist das so möglich?
über weitere Hilfe wäre ich sehr Dankbar
VG
Bene
 
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.