Bedingung für Umbruch in neues < Mathe-Software < Mathe < Vorhilfe
|
Status: |
(Frage) beantwortet | Datum: | 09:40 Mi 24.10.2007 | Autor: | Sahara |
Hallo,
ich brauch mal wieder dringend Hilfe.
Ich habe ein Cell-Array aus Messdaten mit zugehörigen Zeitstempeln. Ich möchte nun über jede Minute den zeitabhängigen Mittelwert bilden (ich weiß schon, dass ich dies am besten mit einer nummerischen Integration hinbekomme).
Leider weiß ich aber nicht, welche Bedingung ich setzen könnte, damit das Programm stets nur die Zeilen mit dem gleichen Minutenwert betrachtet, diese dann entweder als neue Tabelle extrahiert oder wenigstens erkennt. Außerdem muss ich im nächsten Schritt die entsprechenden Zeilen der Tabelle ansprechen können, um meine nummerische Integration durchführen zu können.
Ich hab hier schon mal die (unvollständige) M-File und die zugehörige Mat-Datei mit dem Cell-Array:
Datei-Anhang
Datei-Anhang
Allein komm ich nicht mehr weiter.
Bitte helft mir oder gebt mir ein paar Tipps.
Vielen Dank und liebe Grüße!
Sahara
Ich habe diese Frage in keinem Forum auf anderen Internetseiten gestellt.
Dateianhänge: Anhang Nr. 1 (Typ: m) [nicht öffentlich] Anhang Nr. 2 (Typ: mat) [nicht öffentlich]
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 09:45 Mi 24.10.2007 | Autor: | Sahara |
Entschuldigung, ich hab vergessen die Mathesoftware einzugrenzen. Es handelt sich um eine MATLAB-Problem
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 13:16 Mi 24.10.2007 | Autor: | Martin243 |
Hallo,
ich kann die MAT-Datei leider nicht lesen, "File may be corrupt." Bist du sicher, dass es die richtige Datei ist?
Allgemein würde ich sagen: Wenn zeit der Vektor mit den Zeiten ist, dann vergleiche einfach den Minutenwert in zeit mit dem Minutenwert in dem um 1 verschobenen zeit-Vektor. Dort, wo die Werte ungleich sind, ändert sich der Minutenwert. Da hast du also eine Intervallgrenze. So bekommst du alle Intervallgrenzen, innerhalb derer du mitteln musst.
Vielleicht kannst du die MAT-Datei ändern oder in ASCII speichern?
Gruß
Martin
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 15:26 Fr 26.10.2007 | Autor: | Peter_Pein |
Hi,
ich bin immer noch nicht dazu gekommen. mich in GNU-Octave einzuarbeiten, aber es ist mir gelungen, die Testdatei "Test1_22_10_07.mat" per "load -mat .." einzulesen. Ein "save Test1_22_10_07" ergibt die angehängte Datei.
Ich hoffe, es hilft,
Peter
Anhängsel
Dateianhänge: Anhang Nr. 1 (Typ: mat) [nicht öffentlich]
|
|
|
|
|
Hallo,
meine Matlab-Version scheint damit nicht klarzukommen. Ich habe aber dank Peter_Pein einen Blick in die ASCII-Version werfen können, so dass mir das Format so in etwa klar ist.
Nennen wir das Cell Array mal c. Dann kann man die Durchschnitte wie folgt berechnen:
timearray=reshape([c{:,1}], 19, [])'; %Extrahieren der Zeitinformationen aus dem Cell Array
mins=str2num(timearray(:,15:16)); %Extrahieren der Minuten daraus
newmins=[1 ; 1+find(mins(1:end-1)~=mins(2:end)) ; length(mins)+1]; %Suche nach Minuten, die nicht ihrem Vorgänger gleich sind
minmeans=zeros(length(newmins)-1,1); %Anlegen eines leeren Array zwecks Effizienz
for i=1:length(newmins)-1, %für jede Minute (außer dem letzten Dummy)
minmeans(i)=mean([c{newmins(i):newmins(i+1)-1,2}]); %Berechnung des Schnitts innerhalb der gleichen Minute
end;
Ich hoffe, das passt so in etwa.
Gruß
Martin
|
|
|
|