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

csv-Datei auslesen und in Matrix speichern

 

pfeili
Forum-Century

Forum-Century


Beiträge: 177
Anmeldedatum: 27.08.08
Wohnort: ---
Version: R2019b
     Beitrag Verfasst am: 01.08.2012, 14:00     Titel: csv-Datei auslesen und in Matrix speichern
  Antworten mit Zitat      
Liebe Leute,

ich habe in einem Ordner csv-Dateien in der Form:

Zitat:

RecordingDate :,2012/07/30 12:36:34.9062500
FromSample(Seconds):,0,0s
ToSample(Seconds):,2,0s
,
Channels Recorded ,1
PerChannelSamplingFreq :,10000
,
ChannelName,ChannelNumber,Units,DataType,RangeMin,RangeMax,DataScale,DataOffset,SensorScale,SensorOffset
Ain 0,0,Volts,Uint16,0,65535,0,00030517578125,-10,1,0
,
Ain 0
0,024719238
0,025024414
0,026550293
0,027160645
0,026245117
0,024719238
0,023803711
0,022277832
0,020446777
0,019226074
0,019226074
0,019226074
.
.
.
,
,


und möchte gern Spaltenvektoren erstellen, die denselben Namen, wie ihre entsprechenden csv-Datei tragen und die Werte mit Punkt statt Komma enthalten. (Wichtig ist sicher auch, dass die Dateien immer mit zwei Kommas enden!) Außerdem soll in die erste Zeile jedes Spaltenvektors, Samplingzeit aus Zeile 3 (hier 2 s) stehen.

Am Ende möchte ich mit den Werten eine FFT machen, aber bis dahin ist es noch ein langer Weg. Ich habe jetzt erstmal so angefangen:

Code:

function FFT_Ventil(sample_frequency, sample_time)
clc;
if nargin == 0
    % Abtastrate in Hz
    sample_frequency = 10000;
    % Abtastzeit in s
    sample_time = 2;
end

% Anzahl der Dateien bestimmen
anzahl = length(dir('*.csv'));
names = dir('*.csv');

% Einleseschleife
for n = 1:anzahl
    % Öffne csv-Datei mit Primärdaten
    fid0 = fopen(names(n).name,'r');
    % Öffne txt-Datei als Speicherort
    fid1 = fopen([strrep(names(n).name, '.csv', '') '.txt'],'w');
    %Strings(n) = textscan(fid0, '%s');
    %Werte(n) = str2double(strrep(Strings(n), ',', '.'));
    %Werte(n) = cell2mat(Strings)
    % Schreibe aus csv-Datei in txt-Datei
    fwrite(fid1,char(fread(fid0)));
    % Schließe beide Dateien
    fclose(fid0);
    fclose(fid1);
end

end
 


Bisher wandle ich damit einfach nur csv in txt um. Könnt ihr mir diesbezüglich bitte weiter helfen?

Beste Grüße

pfeili
Private Nachricht senden Benutzer-Profile anzeigen


Bluesmaster
Forum-Century

Forum-Century



Beiträge: 203
Anmeldedatum: 13.11.11
Wohnort: Gera
Version: 2012a
     Beitrag Verfasst am: 02.08.2012, 19:27     Titel:
  Antworten mit Zitat      
das auskommentierte war doch gar nicht so schlecht:

Code:



Wenn die Strings als Cellarray vorliegen ist die Schlacht doch halb gewonnen.


Dann iterierst du über die Zeilen und suchst heraus was du brauchst:


Code:
Sampletime = []
startflag      =  0
Werte         = []

for curString = Strings

pos = strfind(curString{1} , 'ToSample(Seconds):')

% Werte auslesen wenn "Ain 0" überschritten wurde und nur "." noch nicht
if startflag && curString{1}(1) ~= '.'
  Werte(end+1) = str2double(strrep(curString{1}, ',', '.'));
end

if ~isempty(pos)
Sampletime = curString{1}(20 : end)
end

end


Zielvektor = [ Sampletime ; Werte' ]



Das ist nur prinzip-Code den ich nicht getestet habe
aber so müsste man es machen, eingebettet in die
"große Schleife" die über alle Dateien iteriert

Gruß

Blues



Anmerkung: das curString{1} dient zum "entpacken" aus dem Cell
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.