|
|
Mittelwert mit for-Schleife |
|
Dexter |

Forum-Fortgeschrittener
|
 |
Beiträge: 68
|
 |
|
 |
Anmeldedatum: 22.05.13
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 02.07.2014, 09:46
Titel: Mittelwert mit for-Schleife
|
 |
Hallo,
wieder mal stehe ich vor einem Problem. Und zwar habe ich Minutenwerte über einen sehr großen Zeitraum (über eine Million Zeilen) und Stundenwerte. Diese Werte würde ich nun gerne vergleichen. Soweit zur Ausgangslage, nun zum Problem.
Meine Idee ist, immer 60 Minutenwerte zu Mitteln. Das natürlich über alle Zeilen. Dazu verwende ich eine For-Schleife foglender Form:
Das funktioniert solange ich k auf 1000 lasse. Verändere ich es zum Beispiel auf 2000, stimmen die Mittelwerte nicht mehr.
Desweiteren habe ich zwischen jedem berechneten Mittelwert immer 59 Nullzeilen. Diese habe ich versucht über einen Counter zu verhindern, das klappte aber nur bedingt.
Hier erhalte ich NaNs die es eigentlich nicht geben darf und auchn viel zu viele Mittelwerte. Bei k = 1000 sollten es 16 Werte sein, jedoch erhalte ich 272.
Was mache ich falsch?
Viele Grüße,
Dexter
|
|
|
|
|
Dexter |
Themenstarter

Forum-Fortgeschrittener
|
 |
Beiträge: 68
|
 |
|
 |
Anmeldedatum: 22.05.13
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 04.07.2014, 10:15
Titel:
|
 |
Niemand eine Idee?
|
|
|
SkyRazor |

Forum-Century
|
 |
Beiträge: 106
|
 |
|
 |
Anmeldedatum: 07.05.14
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 04.07.2014, 11:11
Titel:
|
 |
Hallo,
Test ist nicht möglich wegen der nicht verfügbaren variable RVR_A. In diesem Fall will niemand deine Code analysieren.
Grüße
|
|
|
Dexter |
Themenstarter

Forum-Fortgeschrittener
|
 |
Beiträge: 68
|
 |
|
 |
Anmeldedatum: 22.05.13
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 04.07.2014, 15:03
Titel:
|
 |
RVR_A ist einfach ein double mit 1377868 Zeilen in einer Spalte. Was für Werte das genau sind, spielt ja erstmal keine Rolle, meinetwegen von 1 bis 1377868.
|
|
|
SkyRazor |

Forum-Century
|
 |
Beiträge: 106
|
 |
|
 |
Anmeldedatum: 07.05.14
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 04.07.2014, 16:14
Titel:
|
 |
Hallo,
bin nicht sicher,ob ich richtig verstanden habe.
Grüße
|
|
|
Nras |

Forum-Meister
|
 |
Beiträge: 608
|
 |
|
 |
Anmeldedatum: 21.02.12
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: 7.12.0.635 (R2011a)
|
 |
|
|
 |
|
Verfasst am: 07.07.2014, 09:16
Titel:
|
 |
Hallo,
auch wenn in dem Titel "... mit for-Schleife" vorkommt, hier ein Vorschlag ohne for-Schleife:
Viele Grüße,
Nras.
|
|
|
Dexter |
Themenstarter

Forum-Fortgeschrittener
|
 |
Beiträge: 68
|
 |
|
 |
Anmeldedatum: 22.05.13
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 08.07.2014, 09:09
Titel:
|
 |
Danke euch beiden! Ihr habt mein Problem richtig verstanden und beide Versionen funktionieren einwandfrei.
Ich versuche mal den Code zu verstehen...
Bei SkyRazor:
Es wird zuerst eine Matrix erstellt und mit Nullen gefüllt. Dabei teilst du durch 60, wodurch mein Problem mit Nullen zwischen den eigentlichen Ergebnissen gelöst ist. Das fix rundet bei der Teilung auf ganze natürliche Zahlen.
Die Schleife läuft dann von 1 bis 1000/60 = 16,67 = 17. In der Schleife mittelst du immer 60 Werte, indem du i ganz normal von 1 bis 17 durchlaufen lässt.
Alles korrekt so?
Nras: Bei deinem Code bin ich mir nicht mehr ganz so sicher. Ich nehme an, die Zeile
benutzt du, um N auf einen durch 60 teilbaren Wert zu bringen?
Anschließend erstellst du eine Matrix mit RVR_A(1:N)x60 und mittelst über jede Spalte einmal.
Korrekt?
Viele Grüße,
Dexter
|
|
|
Nras |

Forum-Meister
|
 |
Beiträge: 608
|
 |
|
 |
Anmeldedatum: 21.02.12
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: 7.12.0.635 (R2011a)
|
 |
|
|
 |
|
Verfasst am: 08.07.2014, 09:54
Titel:
|
 |
Hallo Dexter,
das mit dem fix() stimmt. Das habe ich aber aus der anderen Lösung übernommen. Wenn ich genauer drüber nachdenke, hätte ich eher floor() benutzt, aber bei positiven Zahlen ist das ja das gleiche.
Dexter hat Folgendes geschrieben: |
Anschließend erstellst du eine Matrix mit RVR_A(1:N)x60 und mittelst über jede Spalte einmal. |
fast richtig. Es ist eine 60xN Matrix und nicht eine RVR_A(1:N)x60 Matrix - was auch immer das wäre . Es hat also N Spalten und von jeder Spalte wird der Mittelwert gebildet. Daher ist das Ergebnis dann ein Zeilenvektor mit N Spalten.
Viele Grüße,
Nras.
|
|
|
SkyRazor |

Forum-Century
|
 |
Beiträge: 106
|
 |
|
 |
Anmeldedatum: 07.05.14
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 10.07.2014, 10:11
Titel:
|
 |
hallo,
Dexter hat Folgendes geschrieben: |
Die Schleife läuft dann von 1 bis 1000/60 = 16,67 = 17. |
laut der Dokumentation B=fix(A) rounds the elementsof A toward zero, d. h. fix(1000/60)=16, fix(-1000/60)=-16, aber floor(-1000/60)=-17. deshalb läuft die Schleife bis nur 16.
Eigentlich funktionieren beide Programme fast gleich, aber Nras´s ist besser und effizient.
Meine letzte Frage ist, was möchtest du mit die letzte einige Zahlen tun , z.b. k=1000, dann noch 40 Zahlen ab 961. Soll man auch die durchschnittliche Wert kriegen oder ist es egal? Da wir noch nicht sicher sind, haben beide Programme nichts getan.
Wenn notwendig, dann
Grüße
|
|
|
Dexter |
Themenstarter

Forum-Fortgeschrittener
|
 |
Beiträge: 68
|
 |
|
 |
Anmeldedatum: 22.05.13
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 10.07.2014, 11:24
Titel:
|
 |
Ja die letzten Zaheln sind nicht so wichtig. Am Ende sollen zwei Werte quantitativ verglichen werden, weshalb 40 Zahlen +- bei 1,3 Millionen Werten keinen Unterschied im Diagramm machen.
Aber danke für den Hinweis!
Viele Grüße,
Dexter
|
|
|
|
|
Einstellungen und Berechtigungen
|
|
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
| 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.
|
|