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

Dateiverarbeitung

 

Crankshaft
Forum-Anfänger

Forum-Anfänger


Beiträge: 14
Anmeldedatum: 16.09.09
Wohnort: Braunschweig
Version: ---
     Beitrag Verfasst am: 06.01.2011, 12:46     Titel: Dateiverarbeitung
  Antworten mit Zitat      
Hallo fortgeschrittene Matlabuser,

zur Zeit möchte ich einen Berg Messdaten auswerten, bei dem Mit jeder Messung immer ein und dieselbe Rechenoperation durchgeführt wird. Da dieser Berg recht groß ist, liegt mir der Wunsch nach einer automatisierten Durchführung am Herzen. Diese hab ich im folgenden Code versucht umzusetzen, erhalte jedoch immer
Code:

??? Error using ==> length
Too many input arguments.

Error in ==> load_filter at 8
    for i=1:length(Dateien.name)%Daten einlesen


Mein Progrämmchen sieht wie folgt aus
Code:


clc;
clear all

[B,A] = butter(10,30/(0.5*2000)); %Butterworth-Tiefpass 10.Ordnung, Fg = 30Hz

Dateien = dir(fullfile('C:\Users\Markus\Documents\Uni\Studienarbeit\Auswertung\2.5bar\Sinus\4kN','*.i32')); %Ordner zuweisen

    for i=1:length(Dateien.name)%Daten einlesen
   
DateiName = Dateien.name(i);%Dateinamen aus Array zuweisen

fid =fopen(DateiName,'r');
if fid~=-1
    Data=fread(fid,[4,inf],'float32');
    fclose(fid);
else
    error('Datei lies sich nicht öffnen!');
end

Hebelverhaeltnis = 1.384615385; %gegeben aus Prüfstandgeometrie

t=0:1/2000:(length(Data(1,:))-1)*1/2000;

Kraft_Rahmen = Data(1,:)*(-1); %Extrahiert Messwerte aus Datenvektor und kehrt Vorzeichen bei Kraft und Weg um
Kraft_Rad    = Data(2,:)*(-1);
Acc_Radmitte = Data(3,:);
s_Zylinder   = Data(4,:)*(-1);
Kraft_Rad_berechnet = Kraft_Rahmen/Hebelverhaeltnis;



Kraft_Rahmen = filtfilt(B,A,Kraft_Rahmen);
Kraft_Rad    = filtfilt(B,A,Kraft_Rad);
Acc_Radmitte = filtfilt(B,A,Acc_Radmitte);
s_Zylinder   = filtfilt(B,A,s_Zylinder);

c_Reifen = Kraft_Rad./s_Zylinder; %Berechnung der Steifigkeit
c_Reifen_Mittelwert = mean(c_Reifen);



cd('C:\Users\Markus\Documents\Uni\Studienarbeit\Auswertung\2.5bar\Sinus\4kN\Auswertung\')

save (['Auswertung' num2str(i) '.mat'])
cd('C:\Users\Markus\Documents\Uni\Studienarbeit\Auswertung\2.5bar\Sinus\4kN')
end
 


Vielen Dank schonmal für gemachte Gedanken und Hilfe!
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 06.01.2011, 13:24     Titel:
  Antworten mit Zitat      
Hallo,

verwende length(dateien) anstatt length(dateien.name).
Grund: Letzteres erzeugt eine Liste von einzelnen Dateinamen.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Crankshaft
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 14
Anmeldedatum: 16.09.09
Wohnort: Braunschweig
Version: ---
     Beitrag Verfasst am: 06.01.2011, 15:36     Titel:
  Antworten mit Zitat      
Danke für die prompte Antwort, jedoch macht das Programm immer noch nicht das, was es soll.
Leider habe ich grad niemanden zur Hand, den ich fragen könnte, weshalb ich euch bitte, nochmal auf den Code zu blicken.
Um mich besser verstehen zu können formuliere ich mal, was das Programm machen soll.
Die Dateien (32 Bit Integer) aus dem angegeben Ordner öffnen;
Verarbeiten (Filtern, ein paar Plutimikationen);
Abspeichern in einem neuen Unterordner als Matfile.
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 06.01.2011, 17:26     Titel:
  Antworten mit Zitat      
Hallo,

jetzt müsstest du nur noch sagen, inwiefern das Programm nicht macht, was es soll. Gibt es Fehlermeldungen? Andere Ergebnisse als erwartet? In letzterem Fall, kannst du vielleicht mit dem Debugger eingrenzen, wo das Problem liegt?

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Crankshaft
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 14
Anmeldedatum: 16.09.09
Wohnort: Braunschweig
Version: ---
     Beitrag Verfasst am: 06.01.2011, 17:40     Titel:
  Antworten mit Zitat      
Also der Code mit den Umrechnungen und auch das Filtern für sich funktioniert.
Das Problem lässt sich auf die Stapelbetriebskonstruktion eingrenzen.
Es kommt als Fehlermeldung:

Code:

??? Field reference for multiple structure elements that is followed by more reference blocks
is an error.

Error in ==> load_filter at 10
DateiName = Dateien.name(i); %Dateinamen aus Array zuweisen


Meine Idee war, dass der Dateiname aus der struct Dateien entnommen wird, an den Einlesebefehl fopen weitergeben wird und danach die Daten der i32 Datei entnommen, verarbeitet und gespeichert werden.
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 06.01.2011, 17:48     Titel:
  Antworten mit Zitat      
Hallo,

und schon kann man dir weiterhelfen. Der Index ist an der falschen Stelle:
Code:
DateiName = Dateien(i).name;


Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Crankshaft
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 14
Anmeldedatum: 16.09.09
Wohnort: Braunschweig
Version: ---
     Beitrag Verfasst am: 06.01.2011, 17:50     Titel:
  Antworten mit Zitat      
Super. Vielen Dank!
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.