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

Matlab kontinuierlich laufen lassen/Files auto. importieren

 

Zemon_Yohan
Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 11.06.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 25.08.2015, 11:40     Titel: Matlab kontinuierlich laufen lassen/Files auto. importieren
  Antworten mit Zitat      
Liebe Matlab-Gemeinde,

im Rahmen meiner Masterarbeit benutze ich Matlab um ein "Echtzeit-Kontrollsystem" aufzubauen. Ich versuche im Folgenden mein Problem so gut wie möglich zu beschreiben.

Konkret geht es darum verschiedene Spektren (im Prinzip ist das immer nur ein Vektor) möglichst schnell zu analysieren. Meine Daten liegen einzeln im Format .sif in einem Ordner vor. D.h. jede .sif Datei enthält genau ein Spektrum.
Bisher gehe ich so vor, dass ich über mein Import Skript eine Datei aus diesem Ordner selbst wählen kann, diese wird in mein Matlab Analyse Programm geladen und dort analysiert. Soweit so gut.

Nun würde ich gerne folgendes realisieren:
Ich würde Matlab gerne kontinuierlich laufen lassen und sozusagen auf neue .sif Dateien warten lassen. Sobald ein neues .sif File in diesem Ordner erzeugt wird (durch das Spektrometer) soll dieses automatisch in Matlab importiert werden und analysiert werden. Das soll dann solange fortgesetzt werden bis keine weiteren .sif Dateien kommen oder ich das Matlab Programm manuell stoppe.

Ich habe sowas noch nicht einmal ansatzweise in Matlab durchgeführt und habe keine Idee wie ich da heran gehen soll. Ist so etwas überhaupt möglich? Wenn ja wie?

Ich hoffe ich habe mich verständlich ausgedrückt. Über Hilfe wäre ich sehr dankbar.


Falls es weiter hilft, hier ist der Code zum Importieren von einzelnen .sif Dateien (ist nicht von mir, sondern von der Matlab File Exchange Seite)

Code:

% ------------------------------------------------------------------------
% Read SIF-File
% -----------------------------------------------------------------------
rc=atsif_setfileaccessmode(0); %sets up the sif library to set the access property to load the entire file

 [FileName,PathName,FilterIndex]=uigetfile('*.sif;*.SIF', 'Select SIF'); % opens dialog to let the user select sif to open
absfilepath=strcat(PathName,FileName);; % sets up the file name
rc=atsif_readfromfile(absfilepath); % attempt to open the file

if (rc == 22002) % check that the file was successfully opened
  signal=0;
  [rc,present]=atsif_isdatasourcepresent(signal);  % check there is a signal present
  if present
    [rc,no_frames]=atsif_getnumberframes(signal);  % query the number of frames contained in the file (e.g. in the instance of a kinetic series there may be more than 1
    if (no_frames > 0)
        [rc,extent]=atsif_getframesize(signal);
        [rc,left,bottom,right,top,hBin,vBin]=atsif_getsubimageinfo(signal,0); % get the dimensions of the frame to open
        xaxis=0;
        [rc,data]=atsif_getframe(signal,0,extent); % retrieve the frame data
        [rc,pattern]=atsif_getpropertyvalue(signal,'ReadPattern');
        if(pattern == '0') %FVB
           calibvals = zeros(1,extent);
           for i=1:extent,[rc,calibvals(i)]=atsif_getpixelcalibration(signal,xaxis,(i)); %gets the x-calibration of each pixel (either pixel no. or wavelength
           end
           plot(calibvals,data); % display the 1D data      
           title('spectrum');
         %set up the axis labelling appropriately
           [rc,xtype]=atsif_getpropertyvalue(signal,'XAxisType');
           [rc,xunit]=atsif_getpropertyvalue(signal,'XAxisUnit');
           [rc,ytype]=atsif_getpropertyvalue(signal,'YAxisType');
           [rc,yunit]=atsif_getpropertyvalue(signal,'YAxisUnit');
           xlabel({xtype;xunit});
           ylabel({ytype;yunit});
        elseif(pattern == '4') % image
            width = ((right - left)+1)/hBin;
            height = ((top-bottom)+1)/vBin;
           newdata=reshape(data,width,height); % reshape the 1D array to a 2D array for display
           imagesc(newdata);
        else
        %TODO - implement for single-track, multi-track & random track
        disp('It is not possible to display this acquisition format at this time...')
      end
    end    
  end
else
  disp('Could not load file.  ERROR - ');
  disp(rc);
end
 
Private Nachricht senden Benutzer-Profile anzeigen


Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 25.08.2015, 15:14     Titel:
  Antworten mit Zitat      
ich würde ein programm schreiben das in regelmäßigen abständen mit dem dir befehl guckt ob in dem ordner eine neue datei dazugekommen ist. durch den dir befehl hast du dann ja den filename und kannst das dann importieren ( am besten fullfile benutzen). der teil hir muss da geändert werden :
Code:
[FileName,PathName,FilterIndex]=uigetfile('*.sif;*.SIF', 'Select SIF')
. da guckst du halt mit dir ob sich im vergleich zum vorherigen durchlauf was geändert hat und falls ja dann list du es mit dem restlichen code halt ein.
bei einer schleifenlösung immer auch dran denken das die schleife irgendwann beendet werden sollte. außerdem würde ich nur alle paar sekunden gucken ob was neues da ist. das sind ja immer lese zugriffe.
grüße
_________________

richtig Fragen
Private Nachricht senden Benutzer-Profile anzeigen
 
Zemon_Yohan
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 11.06.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 01.10.2015, 10:55     Titel:
  Antworten mit Zitat      
Danke, das hat übrigens gut funktioniert!
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.