DIAdem

cancel
Showing results for 
Search instead for 
Did you mean: 

bestimmte kanalzeilen mitteln

Ich möchte folgende Filterung realisieren:

Ich habe ein Kanal "Uhrzeit" mit Uhrzeiten. Alle 3 oder 4 zeilen haben die geliche Uhrzeit.
Zeilen von diesem Kanal, die die gleiche Uhrzeit haben sollen gemittelt werden.

Das programm sieht so aus:


Call GroupDefaultSet(GroupIndexGet(GroupCreate("Einzelner_Sensor_Mittelwert")))

 
 
 
  Dim mittelwert, mittelwertarray, mittelwerte , n , p, x
  Set mittelwerte = CreateObject("Scripting.Dictionary")

   
      
      For n = 1 To cl("[5]/Uhrzeit")
        For p = 1 To cl("[5]/Uhrzeit")
           
           If chD(n,cno("[5]/Uhrzeit")) = chD(p,cno("[5]/Uhrzeit")) and not  mittelwerte.exists(chD(n,cno("[5]/Uhrzeit"))) then mittelwerte.add chD(n,cno("[5]/Uhrzeit")), chD(n,cno("[5]/Uhrzeit"))
           
          
        Next
      Next
     

        StatSel(6) = "Yes" ' arithmetischen Mittelwert
 
 

  mittelwertarray = mittelwerte.items

  dim mnew : mnew = cno(chnalloc("Einzelner_Sensor_Mittelwert",mittelwerte.count)(0))

  n= 1
      For Each mittelwert in mittelwertarray
          chD(n,mnew) = mittelwert
          n=n+1
      Next



Frage:

Ich habe noch andere Kanäle z.B. Kanal2 (unterschiedliche Zeilenwerte) und Kanal3 (unterschiedliche Zeilenwerte)

Zeilen von Kanal2 und Kanal3 sollen auch gemittelt werden, allerdings die Zeilen die von Kanal "Uhrzeit" gemittelten wurden. Wie kann das realisiert werden? DANKE!

0 Kudos
Message 1 of 4
(3,837 Views)
Hallo alghouz,

also zuerst eine kleine Zusammenfassung meinerseits, um sicherzustellen, dass ich das Problem richtig verstanden habe.
Es gibt einen Zeitkanal und zwei weitere Kanäle.
Im Zeitkanal sind einige Zeiten doppelt. Genau in diesen Zeilen, sollen die Werte aus den anderen beiden Kanälen entfernt werden, so dass über diese Kanäle genau mit den selben Werten (Zeilen) gemittelt werden kann, wie im Zeitkanal.

Lösung:
Da Sie die Werte im Zeitkanal ja bereits eliminieren konnen, haben Sie hier auch die Zeilennummern, in denen die doppelten Zeiten vorkommen.

Mit Hilfe dieser Zeilennummer, können Sie in den beiden anderen Kanälen die zugehörigen Werte löschen.
Eine Zelle löschen:
Call DATABLDEL("[1]/Geschwindigkeit",6,1,1) '... CHNNOSTR,CHNROW,VALNO,VALDELONLY
Eine Zeile löschen:
Call DATABLDEL("'[1]/Geschwindigkeit' - '[2]/Schall_3'",6,1,1) '... CHNNOSTR,CHNROW,VALNO,VALDELONLY

Anschließend können Sie über die beiden Kanäle mitteln.
Im Anhang finden Sie einen Screenshot, wo genau Sie die Mittelungsfunktion finden.
Die Funktion für Diadem ist folgende:
Call STATBLOCKCALC("Channel","1-","[1]/Geschwindigkeit")

Ich hoffe ich konnte Ihnen weiterhelfen.
Mit freundlichen Grüßen
Dippi
0 Kudos
Message 2 of 4
(3,809 Views)
Hallo Dippi,

Sie habe mich schon richtig verstanden aber das Programm soll selber in Kanal Uhrzeit suchen welche Zeilen gleich sind und diese Zeilen sollen aus Kanal2 und Kanal3 gelöscht werden.
0 Kudos
Message 3 of 4
(3,806 Views)
Hallo alghouz,

ich habe jetzt ein kleines VB Script geschrieben, welches den Zeitkanal nach gleichen Werten durchsucht, und dann in allen Kanälen die entsprechende Zeile löscht.

Anbei ein Beispieldatensatz in dem ein paar doppelte Werte im Zeitkanal stehen, und das zugehörige VB Script.

Alles was Sie noch machen müssen ist die die anschließende Mittelung über die einzelnen Kanäle.

Dippi
0 Kudos
Message 4 of 4
(3,758 Views)