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

Daten umstrukturieren (x=f(y) statt y=f(x) oder so)

 

H.Heckmeck
Forum-Anfänger

Forum-Anfänger


Beiträge: 14
Anmeldedatum: 28.11.18
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 05.12.2018, 11:15     Titel: Daten umstrukturieren (x=f(y) statt y=f(x) oder so)
  Antworten mit Zitat      
Hallo!
Ich habe derartige Daten aus einer Messung. Leider ist die Aufzeichnungsart nur bedingt sinnvoll:

Code:
245,,98,,,,,,,
246,,,,,,,,,
247,,,,,,,97.5,,
248,,,,,,,,,
249,,,,,,,,,
250,,,,,97.5,,,97.5,
251,,,,,,97.5,,,
252,,,,,,,,,
253,,,,97.5,,,,,97
254,,97.5,,,,,,,
255,97.5,,98,,,,,,


Spalte 1 ist die Zeit t, die anderen sind Wege. Die Matrix hat die Größe 315x9.

Ich benötige jetzt einen Mittelwert, allerdings den 'zeitlichen'(?), also für jeden Weg in .5er-Auflösung die durchschnittlich über alle Messungen (=Spalten) benötigte Zeit. Der Messbereich des Wegs ist ein 33x1-Vektor.
Mit den bisher ausprobierten Methoden bekomme ich leider nur Längen als Mittelwert für die Zeit (falls irgendwer versteht, wie ich das meine...).

Gibt es dafür eine Funktion?

Ich habe schon versucht, die Daten umzuschreiben, bin allerdings auch da nicht zum Ergebnis gekommen. Also so etwas wie eine Neuzuordnung der Daten aus Spalte 1 in eine 33x2x9-Matrix, je nach dem welcher Wert des 33x1-Vektors in der selben Zeile steht. Das wäre ideal, aber ich kriege meine Schleifen nicht so gebaut, dass der Wert oben aus der jeweiligen Weg-Spalte in der richtigen Zeile der neuen Matrix landet.

edit: So sollten dann die 9-Seiten der Matrix aussehen:
Code:


Code:

...
98,245
97.5,254
...


Code:
Private Nachricht senden Benutzer-Profile anzeigen


Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 06.12.2018, 16:48     Titel: Re: Daten umstrukturieren (x=f(y) statt y=f(x) oder so)
  Antworten mit Zitat      
Hallo H.Heckmeck,

Zitat:
Spalte 1 ist die Zeit t, die anderen sind Wege. Die Matrix hat die Größe 315x9.

Das ist keine Matrix. Matrizen haben die gleiche Anzahl von Elementen in jeder Spalte. Was wird statt der fehlenden Elemente eingefügt?

Zitat:
Ich benötige jetzt einen Mittelwert, allerdings den 'zeitlichen'(?), also für jeden Weg in .5er-Auflösung die durchschnittlich über alle Messungen (=Spalten) benötigte Zeit.

Ich kann Dir nicht folgen. Was bedeutet "zeitlich"? Was ist ".5er-Auflösung"? Was genau ist ein "Weg"?

Zitat:
Der Messbereich des Wegs ist ein 33x1-Vektor.

Was bedeutet das?

Zitat:
So sollten dann die 9-Seiten der Matrix aussehen:

Was sind "Seiten" einer Matrix?

Bitte formuliere die Frage nochmal genauer. Was sind die Input-Daten? Welches Problem möchtest Du lösen?

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
H.Heckmeck
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 14
Anmeldedatum: 28.11.18
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 06.12.2018, 18:14     Titel: Re: Daten umstrukturieren (x=f(y) statt y=f(x) oder so)
  Antworten mit Zitat      
Hallo Jan!



Jan S hat Folgendes geschrieben:

Bitte formuliere die Frage nochmal genauer. Was sind die Input-Daten? Welches Problem möchtest Du lösen?

Ich versuche es:

Ich habe aufgenommene Werte für Weg s und Zeit t (der selbe Weg wurde 9 Mal gemessen, mit der gegebenen Auflösung ergeben sich die 33 möglichen Werte für den gesamten Weg).
Ich benötige einen Mittelwert in der Form t_median (s). Was ich auf Grund der Datenstruktur lediglich hinbekomme ist s_median(t).

Jan S hat Folgendes geschrieben:
Das ist keine Matrix. Matrizen haben die gleiche Anzahl von Elementen in jeder Spalte. Was wird statt der fehlenden Elemente eingefügt?

Stimmt, sorry - ich habe vergessen zu erwähnen, dass ich obige Daten schon als Matrix eingelesen habe. Die fehlenden Werte werden als 0 gewertet, anschließend habe ich sie durch NaN ersetzt um den Mittelwert bilden zu können.

Zitat:
Was sind "Seiten" einer Matrix?


Mein Ansatz war, die Daten aus der erzeugten und größtenteils mit NaNs gefüllten 315x9-Matrix in eine vollständig mit Messwerten gefüllte 33x2x9-Matrix umzuschreiben und dann jeweils zeilenweise (über jeden aufgelösten Weg-Schritt) die Zeit zu mitteln. Damit hätte ich für jeden Messdurchgang eine Seite, z-Dimension, oder wie auch immer man die Fortführung in der dritten Dimension nennt.
Wenn es einfacher geht habe ich natürlich nichts dagegen (ich sollte noch erwähnen, dass ich hauptsächlich mit Octave arbeite).
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 10.12.2018, 14:12     Titel: Re: Daten umstrukturieren (x=f(y) statt y=f(x) oder so)
  Antworten mit Zitat      
Hallo H.Heckmeck,

Ich kann der Erklärung nicht folgen.
Zitat:
Ich habe aufgenommene Werte für Weg s und Zeit t (der selbe Weg wurde 9 Mal gemessen, mit der gegebenen Auflösung ergeben sich die 33 möglichen Werte für den gesamten Weg).

Ich nehme an, Du hast eine Matrix mit Werten. Was dann "t" und "s" sind, ist zunächst mal nicht klar. Wenn es aber "$" und "kg" wären, sollte Matalb das auch schaffen.

Zitat:
Ich benötige einen Mittelwert in der Form t_median (s). Was ich auf Grund der Datenstruktur lediglich hinbekomme ist s_median(t).

Was bedeutet das? Welche Datenstruktur? Was ist "die Form t_median(s)"?

Zitat:
Mein Ansatz war, die Daten aus der erzeugten und größtenteils mit NaNs gefüllten 315x9-Matrix in eine vollständig mit Messwerten gefüllte 33x2x9-Matrix umzuschreiben

Wie machst Du das?

Zitat:
und dann jeweils zeilenweise (über jeden aufgelösten Weg-Schritt) die Zeit zu mitteln.

Das verstehe ich nicht.

Zitat:
Damit hätte ich für jeden Messdurchgang eine Seite, z-Dimension, oder wie auch immer man die Fortführung in der dritten Dimension nennt.

Das auch nicht.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
H.Heckmeck
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 14
Anmeldedatum: 28.11.18
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.12.2018, 13:38     Titel: Re: Daten umstrukturieren (x=f(y) statt y=f(x) oder so)
  Antworten mit Zitat      
Jan S hat Folgendes geschrieben:
Ich nehme an, Du hast eine Matrix mit Werten. Was dann "t" und "s" sind, ist zunächst mal nicht klar. Wenn es aber "$" und "kg" wären, sollte Matalb das auch schaffen.

Richtig. Ich meine mit t die Werte für die Zeit und mit s diejenigen für den Weg.

Zitat:
Was bedeutet das? Welche Datenstruktur? Was ist "die Form t_median(s)"?

Für jeden Wert von s einen Mittelwert über die Zeit. Ob Median oder Mean oder so sei erst einmal egal.

Zitat:
Wie machst Du das?

Ich mache leider nicht, ich versuche es Wink

Hier mein Ansatz, wobei ich es statt mit 33x2x9 jetzt mit 33x10 versuche. (:,1) ist dabei der Weg, in die anderen Spalten sollen jeweils die entsprechenden Zeiten.

Code:

clear all;
% Einlesen
PDauer = dlmread("20180823_PDauer_TW.csv",",",1,0);
Weg =[94:0.5:110]';                          
m=length(Weg);
o = size(PDauer)(:,2);                     % 9 Einzelmessungen als Spalten
j=size(PDauer)(:,1);                       % = 316 (0 bis 315 s)

pdauer_s = zeros(m,o);               %33x10
pdauer_s(:,1)=Weg;               %erste Spalte =s

for oo=2: o                            % mit for-schleife durch PDauer(:,2:10) laufen
  Zeit = zeros(m,1);               % temporärerer Zeit-Vektor

        for jj=1:j                                  %läuft von 1 bis 316      
     %   mm = 1;                            %wenn ich hier initialisiere bleibt mm für die ganze Schleife resp. für alle Zeilen = 1
           if  PDauer(jj,oo)>0             % Wert für Weg vorhanden
              %s = PDauer(jj,oo);    % Wert für Weg
              t = PDauer(jj,1);              % zum Weg s korrespondierende Zeit t
           else
              t = nan;
           endif;
           Zeit(mm,1)=zeit;            % Wert in temporären Vektor schreiben
      %  mm++;                        % wenn ich hier inkrementiere wird Zeit zu (316x1)
        endfor;
    pdauer_s(:,oo)=Zeit;
endfor;



Zitat:
... Das verstehe ich nicht.

Ich kriege mit nanmean() schon den mean heraus, aber bei meiner ursprünglichen Datenstruktur eben einen räumlichen Mittelwert für die Zeit und nicht umgekehrt. Da die Messungen alle aus einer stetigen Funktion resultieren (der Weg nimmt über die Zeit ab), muss auch der Mittelwert stetig fallen. Das tut nanmean() von meiner Datenstruktur aber nicht, sondern er bewegt sich nur in der Tendenz abwärts, macht aber zwischendurch wieder Sprünge nach oben.


Zitat:
... Das auch nicht.

Ist jetzt mit 33x10 statt 33x2x9 auch hinfällig (abgesehen von der Frage nach der Begrifflichkeit).
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 - 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.