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

Filtern von Wertebereich und anschließend plotten

 

Sino85
Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 18.12.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.12.2012, 14:25     Titel: Filtern von Wertebereich und anschließend plotten
  Antworten mit Zitat      
Hallo Leute,

hoffe ihr könnt mir helfen bin Matlab Anfänger. Nach hoffnungsloser Suche im Inet bräuchte ich eure Hilfe.

Folgendes Problem:

Ich lese Messwerte (txt. Datei) in Matlab ein und würde gerne in einer bestimmten Spalte Werte filtern (Werte liegen zwischen 28-32, 38-42, 48-52, 58-62,....108-112 und anschließen von einem festen Wert zb. die werte die zwischen 28-32 liegen mit 30 subtrahieren (fehlerberechnung) und anschließen plotten.

Wie mache ich das am besten?

Das einlesen der txt Datei erfolgt mit dem Code:

fid = fopen('C:.....Datei.txt');
strrep(fid,'.',',');
tline = fgetl(fid);
while ischar(tline)
disp(tline)
tline = fgetl(fid);
end

fclose(fid);

VG
Private Nachricht senden Benutzer-Profile anzeigen


keywee
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 64
Anmeldedatum: 29.11.12
Wohnort: Berlin
Version: R2012a
     Beitrag Verfasst am: 18.12.2012, 14:57     Titel:
  Antworten mit Zitat      
Code:
clear all

A= [ 1; 2; 3; 4; 5]

condition=A>=2 & A<=4;

Wertebereich1=A(condition,:)


so filters du das ganz schnell raus der rest ist dann einfach nur noch zusammenrechnen

Zuletzt bearbeitet von keywee am 18.12.2012, 15:00, insgesamt einmal bearbeitet
Private Nachricht senden Benutzer-Profile anzeigen
 
Sino85
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 18.12.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.12.2012, 14:58     Titel:
  Antworten mit Zitat      
vielen Dank, werde ich gleich ausprobieren
Private Nachricht senden Benutzer-Profile anzeigen
 
Sino85
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 18.12.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.12.2012, 15:28     Titel:
  Antworten mit Zitat      
Hmm das klappt nicht. ich häng mal die txt mit an vielleicht ist das dann besser zu verstehen.

Ich will das zb. die 7. Spalte nur mit den 30000 werten angezeigt wird, die dazugehörigen zeilen sollen noch dargestellt werden.

Also dann nur noch so: siehe Anhang (Test_filter)

VG

test_filter.txt
 Beschreibung:

Download
 Dateiname:  test_filter.txt
 Dateigröße:  302 Bytes
 Heruntergeladen:  326 mal
test.txt
 Beschreibung:

Download
 Dateiname:  test.txt
 Dateigröße:  2.57 KB
 Heruntergeladen:  326 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
keywee
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 64
Anmeldedatum: 29.11.12
Wohnort: Berlin
Version: R2012a
     Beitrag Verfasst am: 18.12.2012, 15:48     Titel:
  Antworten mit Zitat      
Code:
clear all

fid = fopen('test.txt');
indat = fread(fid, '*char'); %%%nur relavant wenn dein deciamtrennzeichen
indat(indat==',') = '.';       %%%ein punkt ist wie bei mir
Daten  = textscan(indat,repmat('%f', 1, 11),'delimiter','\t');
fclose(fid);



Tabelle = horzcat(Daten{:})

condition1=Tabelle(:,7)>=00000  & Tabelle(:,7)<=040000;
condition2=Tabelle(:,7)>=40000  & Tabelle(:,7)<=100000;
Wertebereich1=Tabelle(condition1,:)
Wertebereich2=Tabelle(condition2,:)


Bei condition sagst du welche spalte deiner tabelle welchen wertebereich haben darf und unter wertebereich laesst du dir die kompletten zeilen ausgeben wo die gewaehlte spalte deiner anforderung entspricht!

zeilen und spalten kannst du einfach drehen indem du :,1 1,: machst
Private Nachricht senden Benutzer-Profile anzeigen
 
Sino85
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 18.12.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.12.2012, 16:04     Titel:
  Antworten mit Zitat      
Das für leider auch nicht zum Ziel (siehe Matlab.txt). Schau dir mal bitte den anhang ("Test_filter") an.

Vielleicht könnte man das ja anders lösen indem man sagt jede x.te Zeile einblenden (Werte die 30000 (+- 2000) enthalten?

Danke für deine Bemühungen.

VG
Private Nachricht senden Benutzer-Profile anzeigen
 
keywee
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 64
Anmeldedatum: 29.11.12
Wohnort: Berlin
Version: R2012a
     Beitrag Verfasst am: 18.12.2012, 16:08     Titel:
  Antworten mit Zitat      
ich bekomme ganz genau deine filter txt...wenn es probleme gibt bei dem code loesche die zeilen mit indat wo ich das decimaltrennzeichen aender.

Code:
clear all

fid = fopen('test.txt');
Daten  = textscan(fid,repmat('%f', 1, 11),'delimiter','\t');
fclose(fid);



Tabelle = horzcat(Daten{:})

condition1=Tabelle(:,7)>=00000  & Tabelle(:,7)<=040000;
condition2=Tabelle(:,7)>=40000  & Tabelle(:,7)<=100000;
Wertebereich1=Tabelle(condition1,:)
Wertebereich2=Tabelle(condition2,:)


unter Wertebereich1 ist genau die Matrix aus deiner Filterdatei abgelegt!!!
Private Nachricht senden Benutzer-Profile anzeigen
 
keywee
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 64
Anmeldedatum: 29.11.12
Wohnort: Berlin
Version: R2012a
     Beitrag Verfasst am: 18.12.2012, 16:18     Titel:
  Antworten mit Zitat      
was passiert denn wenn du den code hier oder oben bei dir reinkopierst! du musst ja eine fehlermeldung bekommen wenn es nicht klappt? was mich jedoch verwundert wuerde weil es wiegesagt tadelos hier funktioniert!

Poste doch mal bitte deinen code oder deine fehlermeldung!
Private Nachricht senden Benutzer-Profile anzeigen
 
Sino85
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 18.12.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.12.2012, 16:27     Titel:
  Antworten mit Zitat      
oh sorry hab voll vergessen matlab.txt hochzuladen.

das kriege ich dann auf meinem bildschirm

Matlab.txt
 Beschreibung:

Download
 Dateiname:  Matlab.txt
 Dateigröße:  215.13 KB
 Heruntergeladen:  367 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
keywee
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 64
Anmeldedatum: 29.11.12
Wohnort: Berlin
Version: R2012a
     Beitrag Verfasst am: 18.12.2012, 16:38     Titel:
  Antworten mit Zitat      
also ich wuesste nicht woran es liegen koennte, wenn es nicht das decimaltrennzeichen ist. Anbei ist mein ergebnis! hast du die test.txt im selben ordner wie deine m.file

Matlab.txt
 Beschreibung:

Download
 Dateiname:  Matlab.txt
 Dateigröße:  7.29 KB
 Heruntergeladen:  377 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
keywee
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 64
Anmeldedatum: 29.11.12
Wohnort: Berlin
Version: R2012a
     Beitrag Verfasst am: 18.12.2012, 16:41     Titel:
  Antworten mit Zitat      
ich bin eben mal deine matlab durchgegangen! es ist wohl eindeutig das koma oder der punkt oder die funktion wertebereich findet keine zahlen in der spalte 7 die entweder zwischen 0 und 40000 liegen oder zwischen 40000 und 100000! zumal du eine ganz andere datei einliesst!!! deine ist ja deutlich laenger als die test.txt die du bereit gestellt hast!

Zuletzt bearbeitet von keywee am 18.12.2012, 16:42, insgesamt einmal bearbeitet
Private Nachricht senden Benutzer-Profile anzeigen
 
Sino85
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 18.12.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.12.2012, 16:41     Titel:
  Antworten mit Zitat      
Ja ist alles im selben Ordner. Hmm komisch.
Private Nachricht senden Benutzer-Profile anzeigen
 
keywee
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 64
Anmeldedatum: 29.11.12
Wohnort: Berlin
Version: R2012a
     Beitrag Verfasst am: 18.12.2012, 16:45     Titel:
  Antworten mit Zitat      
aber du liest nicht die test.txt ein sondern eine andere datei Wink! und was ist dein decimaltrennzeichen punkt oder koma? je nachdem musst die den ersten code oder den zweiten nehmen den ich oben gepostet habe! denn dein problem liegt ganz eindeutig beim einlesen der tabelle!

entpacke mal die datei anbei! oeffne matlab und waehle die m.file

ordner.rar
 Beschreibung:

Download
 Dateiname:  ordner.rar
 Dateigröße:  1.03 KB
 Heruntergeladen:  277 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
Sino85
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 18.12.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.12.2012, 17:30     Titel:
  Antworten mit Zitat      
Hi,

danke jetzt sieht es wie bei dir aus Wink

wie kann ich denn die zahlen in 30000 umwandeln also nicht 0.0003 usw. Wieso wird Column 11 getrennt angezeigt?
Private Nachricht senden Benutzer-Profile anzeigen
 
keywee
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 64
Anmeldedatum: 29.11.12
Wohnort: Berlin
Version: R2012a
     Beitrag Verfasst am: 18.12.2012, 18:06     Titel:
  Antworten mit Zitat      
ueber den tabellen steht ein e^x du solltest vll lieber mal in den workspace gucken anstatt nur mit der cmd zu arbeiten!! du kannst das ganze ja auch jederzeit wieder exportieren...ich kenne ja nicht die genauen anforderungen an dein programm... und das spalten darunter aufgelistet werden liegt einfach nur am zeilenumbruch...mach mal vollbild und lass laufen Wink
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen

Gehe zu Seite 1, 2  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 - 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.