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

For Schleife mit unbek. Endwert (letzter wert aus csv datei)

 

Silverhawk
Forum-Anfänger

Forum-Anfänger


Beiträge: 17
Anmeldedatum: 20.11.08
Wohnort: Braunschweig
Version: R2008b
     Beitrag Verfasst am: 04.03.2009, 14:14     Titel: For Schleife mit unbek. Endwert (letzter wert aus csv datei)
  Antworten mit Zitat      
Hallo,
ich habe ein kleines Problem.
Und zwar möchte ich aus einer CSV Datei einen Wert mit einem anderen aus einer anderen CSV Datei vergleichen.
Das Funktioniert schon ganz gut, nur leider muss ich ja immer das Ende der For-Schleife angeben. Wenn ich dieses aber nicht kenne, stehe ich auf dem schlauch. Wenn ich ihn zu groß wähle, bricht er einfach ab.
Wie kann ich denn herausfinden, welches der letzte Wert in der CSV Datei ist?
Code:
CAM1 = csvread('LED1_1.dat');
CAM2 = csvread('LED2_1.dat');

t=1;
for m = 1:20  
   frame_cam1 = CAM1(m);
      for n= 1:20
        frame_cam2 = CAM2(n);
        if frame_cam1 == (frame_cam2 -10)  | frame_cam1 == (frame_cam2 -9)  | frame_cam1 == (frame_cam2 -11)
           LED_Start(t,1) = frame_cam1;  
           t=t+1;          
        end
       n=n+1;
   end    
   m=m+1;
end
display(LED_Start);
end
 

_________________

Lauf nicht weg sagte der Drache, ich will doch nur kosten....
Private Nachricht senden Benutzer-Profile anzeigen


steve
Ehrenmitglied

Ehrenmitglied



Beiträge: 2.022
Anmeldedatum: 03.09.07
Wohnort: Wien
Version: R2023b
     Beitrag Verfasst am: 04.03.2009, 14:22     Titel:
  Antworten mit Zitat      
Moin,

du kannst bei jedem Vektor die Länge mit
Code:
herausfinden.

Dein Code müsste also lauten:
Code:
CAM1 = csvread('LED1_1.dat');
CAM2 = csvread('LED2_1.dat');

t=1;
for m = 1:length(CAM1)
   frame_cam1 = CAM1(m);
      for n= 1:length(CAM2)
        frame_cam2 = CAM2(n);
        if frame_cam1 == (frame_cam2 -10)  | frame_cam1 == (frame_cam2 -9)  | frame_cam1 == (frame_cam2 -11)
           LED_Start(t,1) = frame_cam1;  
           t=t+1;          
        end
%       n=n+1;  diese Zeilen werden nicht benötigt, Matlab erhöht die Zählvariable automatisch
   end    
%   m=m+1;  siehe oben
end
display(LED_Start);
end

_________________

>> I told me to.

____________________________________
Matlab Cheat Sheet
goMatlab-Knigge - dran gehalten?!
Schon in den FAQ gesucht?
Ist vielleicht bei den Skripten oder den Tutorials was für dich dabei?
Private Nachricht senden Benutzer-Profile anzeigen
 
Epfi
Forum-Meister

Forum-Meister



Beiträge: 1.134
Anmeldedatum: 08.01.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.03.2009, 14:25     Titel:
  Antworten mit Zitat      
Code:

gibt dir die Größe der Rückgabe des csvread-Befehls aus. Damit bekommst Du dann auch raus, wie weit Du laufen willst.

Bequeme Alternative ist length allerdings verbirgt sich in dem Befehl auch eine recht tückische Fehlerquelle.
Private Nachricht senden Benutzer-Profile anzeigen
 
Silverhawk
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 17
Anmeldedatum: 20.11.08
Wohnort: Braunschweig
Version: R2008b
     Beitrag Verfasst am: 05.03.2009, 09:54     Titel:
  Antworten mit Zitat      
Super, vielen Dank! Das mit dem length befehl hat geklappt Smile
kleine Frage noch nebenbei: wenn ich Bilder aus einem Verzeichnis einlese, wie bekomm ich dort das letzte bild? (bild 001, bild 002,.. ,bild xxx)
_________________

Lauf nicht weg sagte der Drache, ich will doch nur kosten....
Private Nachricht senden Benutzer-Profile anzeigen
 
steve
Ehrenmitglied

Ehrenmitglied



Beiträge: 2.022
Anmeldedatum: 03.09.07
Wohnort: Wien
Version: R2023b
     Beitrag Verfasst am: 05.03.2009, 10:02     Titel:
  Antworten mit Zitat      
Wenn die Namen alle in einem Vektor oder einem Cell-Array stehen:
Code:
namen(end); % bei cell-Arrays evtl. namen{end}


Gruß
Alex
_________________

>> I told me to.

____________________________________
Matlab Cheat Sheet
goMatlab-Knigge - dran gehalten?!
Schon in den FAQ gesucht?
Ist vielleicht bei den Skripten oder den Tutorials was für dich dabei?
Private Nachricht senden Benutzer-Profile anzeigen
 
Epfi
Forum-Meister

Forum-Meister



Beiträge: 1.134
Anmeldedatum: 08.01.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 05.03.2009, 10:07     Titel:
  Antworten mit Zitat      
Silverhawk hat Folgendes geschrieben:
kleine Frage noch nebenbei: wenn ich Bilder aus einem Verzeichnis einlese, wie bekomm ich dort das letzte bild? (bild 001, bild 002,.. ,bild xxx)


Gibt mehrere Möglichkeiten dazu. Wobei zu beachten ist, dass Matlab und leerzeichen in Dateinamen nur in sehr kleinem Maße zusammenpassen...

Code:

bilderliste = dir('*.bmp') %dateityp entsprechend anpassen

%es folgen drei gleichwertige Möglichkeiten
anzahl_der_bilder = numel(bilderliste)
anzahl_der_bilder = length(bilderliste)
anzahl_der_bilder = size(bilderliste, 1)

name_des_letzten_bildes = bilderliste(anzahl_der_bilder).name
 


dir gibt Dir eine Struktur mit allerlei Informationen zurück. Alternativ dazu gibt es noch ls dort bekommt man allerdings ein für die Weiterverarbeitung etwas unhandliches Array zurück, das unter umständen mehr Leerzeichen als Nutzinformation enthält.

EDIT: Steve macht's eleganter!
Private Nachricht senden Benutzer-Profile anzeigen
 
Silverhawk
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 17
Anmeldedatum: 20.11.08
Wohnort: Braunschweig
Version: R2008b
     Beitrag Verfasst am: 05.03.2009, 15:35     Titel:
  Antworten mit Zitat      
Danke, ich liebe dieses Forum Very Happy
_________________

Lauf nicht weg sagte der Drache, ich will doch nur kosten....
Private Nachricht senden Benutzer-Profile anzeigen
 
Silverhawk
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 17
Anmeldedatum: 20.11.08
Wohnort: Braunschweig
Version: R2008b
     Beitrag Verfasst am: 12.03.2009, 17:40     Titel:
  Antworten mit Zitat      
meine Datei heißt nun " parabel_40_Bild_ 0022.jpeg "

wie kann ich denn nun die "40" extrahieren?

Code:
bilderliste = dir('E:\CAM_bilder\genauer\*.jpeg');
anzahl_der_bilder = length(bilderliste);
name_des_letzten_bildes = bilderliste(anzahl_der_bilder).name ;
test= name_des_letzten_bildes

_________________

Lauf nicht weg sagte der Drache, ich will doch nur kosten....
Private Nachricht senden Benutzer-Profile anzeigen
 
Epfi
Forum-Meister

Forum-Meister



Beiträge: 1.134
Anmeldedatum: 08.01.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 12.03.2009, 17:45     Titel:
  Antworten mit Zitat      
Das kommt stark darauf an, wie deine anderen Dateien heißen...
Private Nachricht senden Benutzer-Profile anzeigen
 
spawnferkel
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 53
Anmeldedatum: 11.03.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 12.03.2009, 19:54     Titel:
  Antworten mit Zitat      
Man kann es bestimmt mal mit regulären Ausdrücken versuchen:
Code:
str='parabel_40_Bild_ 0022.jpeg'
n=regexp(str,'\d*','match');
n{1} % erstes Element der cell n
% oder
m=regexp(str,'\d*','match','once') % nur der erste Treffer
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 - 2024 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.