Einlesen von internen Signalen eines Mikrocontrollers mit Matlab

Aus HSHL Mechatronik
Version vom 10. November 2014, 16:10 Uhr von Mirekgoebel (Diskussion | Beiträge) (Die Seite wurde neu angelegt: „# # # # Nutzen Sie den folgenden Code in Matlab (speichern unter '''funktion_signale_aus_txtlog_einlesen.m'''!): <source line lang="matlab" style="font-size…“)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Zur Navigation springen Zur Suche springen
  1. Nutzen Sie den folgenden Code in Matlab (speichern unter funktion_signale_aus_txtlog_einlesen.m!):
 
function [A] = funktion_signale_aus_txtlog_einlesen(Datei);
%%% Funktion zum Einlesen von Signalen aus einer Textdatei.
%%%
%%% Eingang: Name inkl. Pfad einer Textdatei
%%% Ausgang: Matrix mit allen eingelesen Signalen in den Spalten (je Zeile
%%%             Text eine Zeile in der Matrix)
%%% Format der Textdatei:
%%%             Signal1;Signal2;Signal3,
%%%
%%%             also z. B.: 
%%%             34368;652;27;0;0;0;286;-68391,
%%%             34386;652;27;0;0;0;285;-68392,
%%%             34420;652;27;0;0;0;283;-68394,
%%%             34453;652;27;0;0;0;282;-68395,
%%%             34487;652;27;0;0;0;284;-68393,

%% Datei öffnen und Daten einlesen
% öffnen
fid = fopen(Datei);

% Rohdaten einlesen
raw_data = fread(fid,'*char')';
if ~(strcmp(raw_data(1),';'))
    raw_data=[';',raw_data];
end

%% Semicolons und Kommas finden
string_laenge   = length(raw_data);
semicolon       = strfind(raw_data,';');
komma           = strfind(raw_data,',');
gesamt          = sort([semicolon komma]);

n_spalten = round((length(gesamt)-1)/length(komma));
i_semicolon = 1;
i_komma     = 1;
i_zeilen    = 1;
i_gesamt    = 1;

%% leere Matrix A erzeugen
A = [];

% Matrix A befüllen
try
    while i_gesamt <= length(gesamt)
        for i_spalten = 1:n_spalten
            i_gesamt = i_gesamt+1;
            if i_gesamt >1
                if strcmp(raw_data(gesamt(i_gesamt-1)),',')
                    i_komma = i_komma +1;
                end
            end
            try
                A(i_komma,i_spalten) = str2num(raw_data(gesamt(i_gesamt-1)+1:gesamt(i_gesamt)-1));
            catch
                %fprintf(1, '%s: Catch-Zweig erreicht\n', mfilename);
            end
        end
    end
catch
    %fprintf(1, '%s: Catch-Zweig erreicht\n', mfilename);
end

%% Datei schließen
fclose(fid);