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 aller Dateien aus einem Ordner

 

Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 16.01.2011, 02:45     Titel:
  Antworten mit Zitat      
Hallo Kia,

Zitat:
Code:

Y = cell(1, k);  % Preallocation !!!
for n=1:k          
    Y{n}=x(1,:).data;
end
a=cell2mat(Y);

Dann frage ich noch einmal:
Wäre "a" dann das gleiche wie:
Code:
b = cat(1, x.data)

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen


Kia
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 89
Anmeldedatum: 02.09.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 03.02.2011, 15:30     Titel:
  Antworten mit Zitat      
Hallo Jan

sorry habe deinen Beitrag zu spät gemerkt!
Der Unterschied ist dein Code viel schneller arbeitet als mein Vorschlag :d Ich musste nur die dimension anpassen damit ich eine (1000 x 7 Matrix bekomme) anstatt 7000 x1
Code:

x=cell2mat(daten)
b = cat(2, x.data)
Private Nachricht senden Benutzer-Profile anzeigen
 
Lobbis

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 23.05.2011, 09:20     Titel: messdateien einlesen und jede verarbeiten
  Antworten mit Zitat      
hallo,

ich habe ähnliche probleme wie in diesem forenbeitrag schon beschrieben wurden. irgendwie helfen mir die lösungsansätze aber nicht so ganz weiter.

ich kann die dateien in matizen der größe (123,123) ohne fehlermeldung einlesen mit:

Code:
clc;clear all;

pfad = 'pfadname';
liste = dir(fullfile(pfad,'*.txt'));

files = {liste.name};

for k=1:numel(files)
% einlesen der Dateien
     daten{k} = load(fullfile(pfad,files{k}));

end



jetzt will ich aber mit den eingelesenen messwerten rechnen. Z.B. einfach den mittelwert bilden.
wenn ich jetzt
Code:
daten(1)+daten(2)

berechnen will, bekomm ich eine ehlermeldung.

Danke für euer hilfe!
 
Kia
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 89
Anmeldedatum: 02.09.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 23.05.2011, 09:45     Titel:
  Antworten mit Zitat      
Hallo Lobis,

ich habe jetzt nicht verstanden wie die Formate deiner eingelesen dateien sind? sind das Zellen oder Matrizen? welchen Mittelwert möchtest du denn berechnen? Beschreibe bitte genau welches Format und welche Dimension dein Daten haben
Private Nachricht senden Benutzer-Profile anzeigen
 
Lobbis

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 23.05.2011, 10:03     Titel:
  Antworten mit Zitat      
Hallo Kia,

die Dateien die ich einlesen will sind bereits Matrizen der Form (123,123).
sie liegen in einem .csv format vor.
der dateiname ist durchnummeriert:
Messung19052011000001.csv
Messung19052011000002.csv
...
Messung19052011000100.csv

insgesamt also 100 dateien die einzulesen sind.

nun möchte ich eine matrix, in der jeder eintrag dem mittelwert der 100 messungen entspricht. was ich meine ist:

M(i,j)= Mittelwert aller Messungen vom Matrixeintrag (i,j)
 
denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 23.05.2011, 15:37     Titel:
  Antworten mit Zitat      
Hallo Lobbis,

du speicherst doch die Matrizen in Cell, also muss du einzelne Cells etweder zu Matrix zusammenbasteln( siehe Bsp 1) oder, mit Cells rechnen (Bsp 2)

Bsp 1
Code:

daten        = cat(3,daten{:});
mittelwert = mean(daten,3)
 


Bsp 2

Code:

mittelwert=[]
for k=1:length(daten)
   if k==1
     mittelwert=daten{k}
   else
     mittelwert = mittelwert+daten{k}
   end

end

mittelwert= mittelwert/length(daten)
 
Private Nachricht senden Benutzer-Profile anzeigen
 
Lobbis

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 23.05.2011, 16:09     Titel:
  Antworten mit Zitat      
Hallo denny,

danke für den Hinweis =)
nun klappt alles wunderbar!

Vielen Dank für Eure Hilfe!
 
Paedda7295
Forum-Anfänger

Forum-Anfänger


Beiträge: 25
Anmeldedatum: 30.01.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 26.03.2012, 12:18     Titel:
  Antworten mit Zitat      
Hi, ich hätte auch ein paar probleme mit diesem thema hier.... ich habs jetzt schon mit den bisherigen antworten versucht hinzukriegen, allerdings kriege ich es einfach nicht gebacken....


also erstmal mein ziel: ich habe einen ordner, in dem ein haufen dateien sind, die ich alle nacheinander abarbeiten will. aus diesen dateien soll jeweils eine grafik gemacht werden und die soll in einem anderen verzeichnis gespeichert werden.

bisher sieht das ganze so aus:


Code:
function figurerstellungordnerweiseTEST2()
%CREATEFIGURE(X1,Y1,MEA1,MAX1,LINKS1,Y2,RECHTS1)
%  X1:  vector of x data
%  Y1:  vector of y data
%  MEA1:  stem x
%  MAX1:  stem y
%  LINKS1:  stem x
%  Y2:  stem y
%  RECHTS1:  stem x

%  Auto-generated by MATLAB on 19-Feb-2012 15:06:13
liste = dir(fullfile('C:\Dewesoft7\Exports\','*.mat'))
files = {liste.name}
pfad = 'C:\Users\Alex\Desktop\Pa\Matlabauswertungen\'
daten = cell(size(files))
 
for k=1:numel(files)
    % einlesen der Dateien
     daten{k} = fopen(fullfile('C:\Dewesoft7\Exports\',files{k}))
     
 name = 'test' %benennen der datei


   

    achse = 0:0.01:1
   
    P = path
   
    A = daten{k}
    path(P,'C:\Users\Alex\Desktop\Pa\Matlabauswertungen');
   
   
   
           
    n = hist(A.Data1_Q,achse)
    MEA = mean(A.Data1_Q)
    MED = median(A.Data1_Q);
    rechts = quantile(A.Data1_Q,0.95);
    links = quantile(A.Data1_Q,0.05);
    quantilwertlinks = 50000;
    quantilwertrechts = 50000;
    MAX = max(n);
   
   

% Create figure
figure1 = figure;

% Create axes
axes1 = axes('Parent',figure1);
box(axes1,'on');
hold(axes1,'all');

% Create plot
plot(achse,n);

% Create xlabel
xlabel('Q');

% Create ylabel
ylabel({'Absolut'});

% Create title
title(name);

% Create stem
stem(MED,MAX,'Marker','none','DisplayName','MEAN');

% Create stem
stem(links,quantilwertlinks,'Marker','none','DisplayName','0,05-Quantil');

% Create stem
stem(rechts,quantilwertrechts,'Marker','none','DisplayName','0,95-Quantil');


print(figure1,name,'-dbitmap');
fclose(fid);
end;

 






wenn ich das teil dann ausführe, kommt zwar keine fehlermeldung, allerdings bekomme ich auch keine datei ausgegeben.... findet jemand meinen fehler?
Private Nachricht senden Benutzer-Profile anzeigen
 
denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 26.03.2012, 13:21     Titel:
  Antworten mit Zitat      
Hallo

ich vermute du willst ASCII-Files einlesen?
Also musste als erstes File-Extention anpassen:
angenommen du hast TXT-files, dann muss die Zeile so anpassen:

Code:

liste = dir(fullfile('C:\Dewesoft7\Exports\','*.txt'))
 


Weiter sehe ich noch mehr Fehler, es reicht nicht mit FOPEN Fileidentifier zu erzeugen, du musst danach Daten auch noch einlesen z.B mit TEXTSCAN:
Code:

for k=1:numel(files)
  fid= fopen(fullfile('C:\Dewesoft7\Exports\',files{k}))
  daten{k} = textscan(fid,'%f','delimiter','\n')
  fclose(fid);
end

 




Ich verstehe einfach nicht ist das ASCII oder MAT-File
Denn woher kommen dann die Strukturen plötzlich? Macht kein Sinn. Also ist dann vielleicht doch LOAD gemeint? Bitte zuerst selbst überlegen was man machen möchte.
Code:



A = daten{k}
n = hist(A.Data1_Q,achse)
 
Private Nachricht senden Benutzer-Profile anzeigen
 
Paedda7295
Forum-Anfänger

Forum-Anfänger


Beiträge: 25
Anmeldedatum: 30.01.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 26.03.2012, 13:34     Titel:
  Antworten mit Zitat      
Es handelt sich bei den ganzen Dateien um .mat-dateien....

in diesen dateien sind eine reihe von messdaten, die ich nach dem öffnen der datei grafisch zusammenfassen möchte.... wenn ich das mit einzelnden datein mache, funktioniert das auch super.

Da arbeite ich dann mit

A = importdata('...')


allerdings müsste ich dann jedes mal die zu importierende datei ändern und das sind ca 650 stück.... deshalb würde ich das ganze gerne automatisieren Wink


genau bei dem Punkt

A = ...


bin ich mir halt nicht scher, was ich da eintragen soll.... ich würde halt gerne auf alle bestandteile der datei zugreifen können, wie wenn ich die einzelne datei importiere.... das dürfte doch nicht so schwer sein oder?
Private Nachricht senden Benutzer-Profile anzeigen
 
denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 26.03.2012, 14:04     Titel:
  Antworten mit Zitat      
Hallo

dann statt FOPEN, LOAD nehmen: etwa so

Code:
function figurerstellungordnerweiseTEST2()
%CREATEFIGURE(X1,Y1,MEA1,MAX1,LINKS1,Y2,RECHTS1)
%  X1:  vector of x data
%  Y1:  vector of y data
%  MEA1:  stem x
%  MAX1:  stem y
%  LINKS1:  stem x
%  Y2:  stem y
%  RECHTS1:  stem x

%  Auto-generated by MATLAB on 19-Feb-2012 15:06:13
liste = dir(fullfile('C:\Dewesoft7\Exports\','*.mat'))
files = {liste.name}
pfad = 'C:\Users\Alex\Desktop\Pa\Matlabauswertungen\'
daten = cell(size(files))
 
for k=1:numel(files)
    % einlesen der Dateien
     A = load(fullfile('C:\Dewesoft7\Exports\',files{k}))
     
    name = 'test' %benennen der datei


   

    achse = 0:0.01:1
   
    P = path
   
    path(P,'C:\Users\Alex\Desktop\Pa\Matlabauswertungen');
   
   
   
           
    n = hist(A.Data1_Q,achse)
    MEA = mean(A.Data1_Q)
    MED = median(A.Data1_Q);
    rechts = quantile(A.Data1_Q,0.95);
    links = quantile(A.Data1_Q,0.05);
    quantilwertlinks = 50000;
    quantilwertrechts = 50000;
    MAX = max(n);
   
   

% Create figure
figure1 = figure;

% Create axes
axes1 = axes('Parent',figure1);
box(axes1,'on');
hold(axes1,'all');

% Create plot
plot(achse,n);

% Create xlabel
xlabel('Q');

% Create ylabel
ylabel({'Absolut'});

% Create title
title(name);

% Create stem
stem(MED,MAX,'Marker','none','DisplayName','MEAN');

% Create stem
stem(links,quantilwertlinks,'Marker','none','DisplayName','0,05-Quantil');

% Create stem
stem(rechts,quantilwertrechts,'Marker','none','DisplayName','0,95-Quantil');


print(figure1,'-dbitmap',name);

end;
Private Nachricht senden Benutzer-Profile anzeigen
 
Paedda7295
Forum-Anfänger

Forum-Anfänger


Beiträge: 25
Anmeldedatum: 30.01.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 26.03.2012, 14:31     Titel:
  Antworten mit Zitat      
ouh ja, das sieht schonmal sehr viel besser aus, allerdings speichert er immernoch nicht die erstellten diagramme :/ das müsste doch mit der print-funktion eingebaut sein oder nicht? als ich das mit den einzelnen dateien gemacht habe, hat es einwandfrei funktioniert....
Private Nachricht senden Benutzer-Profile anzeigen
 
Paedda7295
Forum-Anfänger

Forum-Anfänger


Beiträge: 25
Anmeldedatum: 30.01.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 26.03.2012, 15:02     Titel:
  Antworten mit Zitat      
ich habs geschafft Smile


geht sicher auch hübscher, aber habe es nun so gemacht:


Code:
String=strcat('C:\Users\Alex\Desktop\Pa\Matlabauswertungen\',name,'.bmp');
print( figure1, '-djpeg', String);
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: 26.03.2012, 15:06     Titel:
  Antworten mit Zitat      
warum nimmst du als datei endung bmp und als format jpeg?
Private Nachricht senden Benutzer-Profile anzeigen
 
Paedda7295
Forum-Anfänger

Forum-Anfänger


Beiträge: 25
Anmeldedatum: 30.01.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 26.03.2012, 15:10     Titel:
  Antworten mit Zitat      
upsi, da hab ich wohl was durcheinander geworfen, soll bmp werden, danke Wink
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen

Gehe zu Seite Zurück  1, 2, 3

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.