DIAdem

cancel
Showing results for 
Search instead for 
Did you mean: 

Zum Vergleich: verschiedene Dateitypen(DIAdem)

Hallo
 
Ich arbeite mit einem Programm von DIAdem (VB) :hab schon ein *.tdm-Datei als Kanalgruppe im Kontextmenü angelegt, und kann automatisch Daten aus einer *.txt Datei laden, jetzt möchte ich der Text-Datei(*.txt) mit die andere *.tdm-Dateien vergleichen,aber ich habe keine Idee das Programm weiter zu schreiben... 
Gibt es ein Beispiel Programm,oder kann mir ein paar Tipps geben? THX!!!

Message Edited by ni428 on 08-10-2007 04:59 AM

0 Kudos
Message 1 of 9
(4,602 Views)
Hallo,
pauschal ist dre Frage ein bisschen schwierig zu beantworten. Es kommt ganz darauf an, wie die Dateien genau aussehen und was sie vorhaben.
Ist die Anzahl der Kanäle bzw deren Länge identisch? Oder ist es genaus das, was Sie mit dem Vergleich herausfinden möchten?
Oder möchten Sie die Inhalte der Dateien vergleichen, vielleicht in einer Art Limit-Test, in welchem die TDM Messdatei Kanal für Kanal mit einer Vorgabe in der TXT Datei verglichen werden soll?

Wenn Sie die Aufgabe noch etwas genauer beschreiben, kann ich Ihnen sicher ein paar Tipps geben.
Ingo Schumacher
Systems Engineering Manager CEERNational Instruments Germany
Message 2 of 9
(4,586 Views)
Danke IngoS! Ich weiss,dass meine Frage ein bisschen schwierig zu beantworten ist,weil ich weiss auch nicht genau,welche die *.tdm-Datei Kanäle mit der *.txt-Datei verglichen werden soll?
Mein Projekt ist über Farberkennung. Mit DIAdem soll ich folgende realisieren: 8 Grundfarben(*.tdm-Datei : Messdaten mit geglättete Kurve,Peaks...) als Kanalgruppe im Kontextmenü angelegt,dann ein .txt Datei(für eine unbekannte Farbe,mit X-Achse ist die Wellenlänge,Y-Achse ist Prozentschritten) auslesen,und das Spektren von TXT Datei mit die 8 Grundfarben vergleichen,dann sortiert automatisch unbekannte Datei zugehörige Farbbereich.
Jetzt versuche ich *.txt-Datei mit die andere *.tdm-Dateien vergleichen,Ob das geht?
0 Kudos
Message 3 of 9
(4,577 Views)
Hmm, ich glaube, ich könnte mir das Ganze etwas besser vorstellen, wenn Sie mir die Dateien zukommen lassen könnten. Entweder an den Thread hängen, oder als Email an ingo <dot> schumacher <at> ni <dot> com. Wäre das möglich?
Ingo Schumacher
Systems Engineering Manager CEERNational Instruments Germany
0 Kudos
Message 4 of 9
(4,574 Views)
Jetzt, wo ich dioe Daten gesehen habe, verstehe ich den zusammenhan besser.
Kanal 1 aller Farbkurven (Wellenlänge) in der TDM Datei scheint identisch zu sein, das macht die Sache einfacher.

  1. Kanal 1 der Farbkurve in der TXT Datei hat einen anderen Werteumfang als die Vergleichskurven. Im ersten Schritt muss dieser also an die Vergleichskurven angepasst werden. Das heisst, von 400 bis 850 nm eingegrenzt. Somit können dann alle Kurven den gleichen x- Kanal nutzen. Zur Anpassung benutzen sie die Funktion "Lineare Abbildung" mit den Eingangsparametern Ch1(txt), Ch2(txt), ch1(TDM).  Welche n x. Kanal Sie aus der TDM nehmen, ist irrelevant, da die Farbkurve sich alle auf den gleichen Bereich im Spektrum beziehen.
  2. Es entsteht ein neuer Kanal, "LinearMapped". Unter Umständen beinhaltet dieser aufgrund der vorherigen Operation noch sogenannte Novalues - ungültige Bereiche. Je nach Folgerechnung muss man diese noch mit einer entsprechenden Funktion beseitigen
  3. Die einfachere Variante der Weiterberechnung ist: für jede Farbkurve der TDM Datei (besser für jeden y-Kanal) die Differenz mit dem Kanal "LinearMapped" zu ermitteln und dessen Standardabweichung zu berechnen.
  4. Die Kurve mit der kleinsten Standardabweichung ist die gesuchte Farbe
Diese Prozedur lässt sich leicht automatisieren, es wird kein interaktiver Eingriff des Anwenders benötigt. Sind die Kurven nicht 100%ig deckungsgleich, gewinnt die Kurve mit der kleinsten mittleren Abweichung.
Sollte diese Prozedur nicht die gewünschten Ergebnisse liefern, bietet es sich vielleicht noch an, statt mit der Differenzbildung mit der Kreuzkorrelation zu rechnen. Diese Funktion nutzt einen ganz anderen Ansatz, braucht mehr Vorbereitung und mehr Rechnenkraft des Computers, deshalb würde ich empfehlen, zunächst mit dem oben beschriebenen Ansatz zu arbeiten.


Ingo Schumacher
Systems Engineering Manager CEERNational Instruments Germany
Message 5 of 9
(4,563 Views)
Hallo IngoS,
 
Danke für Ihre rasche Antwort,die für mich etwas mehr Klarheit!!!Smiley Happy
Aber ich habe keine Ahnung mit VB weiterzumachen,denn ich habe vorher immer mit "Aufzeichnungsmodus" im Modul DIAdem-SCRIPT programmiert.Robot SadHaben Sie vielleicht eine Beispiel für mich?
 
MfG
 
NI428
0 Kudos
Message 6 of 9
(4,546 Views)
OK, ich habe jetzt gemäß meiner Anleitung ein Script erstellt. Überwiegend mit dem Teachin Modus, aber -zugegeben - ein paar Tricks habe ich so noch eingebaut. Zum Beispiel die Verknüpfung der TXT mit einer STP Datei - so braucht man den Ascii Import Filter nur einmal zu konfigurieren.
Und die Schleife, die einmal für jede Gruppe in der TDM Datei ausgeführt wird. Dadurch funktioniert das Script automatisch, wenn neue Farbdefinitionen hinzukommen. Übrigens werden aus den Farbgruppen nur die Kanäle Kanal1 und Kanal2 genutzt.

Passen Sie auf Ihrem Rechner bitte noch die Pfade an: MyFolders(0) auf das Unterverzeichnis mit den TXT Dateien und MyFolders(1) auf das Unterverzeichnis mit der TDM und der STP Datei.

Option Explicit  'Forces the explicit declaration of all the variables in a script.

Dim MyFolders()
Call InitMyFolders
'-------------------------------------------------------------------------------
Sub InitMyFolders
  ReDim MyFolders(1)
  MyFolders(0)="C:\Dokumente und Einstellungen\grschumi\Desktop\Farbe\Unbekannte Farbe\"
  MyFolders(1)="C:\Dokumente und Einstellungen\grschumi\Desktop\Farbe\"
End Sub

sub configStat
dim i
  for i = 1 to 23
    StatSel(i)       ="No"
  next
  StatSel(14)      ="Yes"
  StatClipCopy     =0
  StatClipValue    =0
  StatFormat       =""
  StatResChn       =0
end sub

'-------------------------------------------------------------------------------
dim g, stdev, col

Call DataDelAll(1)                      '... HeaderDel
Call FileNameGet("ANY","FileRead",MyFolders(0),"*.txt")
if dlgstate = "IDOk" then
  Call ASCIIAssocSet(".txt",Myfolders(1)&"farben.stp")
  Call ASCIILoad(Filedlgfilename ,0)
  Call DataFileLoad(MyFolders(1)&"farbe.TDM","TDM","Load") '... DataFilename,FileImportFilter,ImportAction
  Call GroupCreate("temporary channels",2)'... GroupCreateName,TargetGroupIndex
  Call GroupDefaultSet(2)                 '... TargetGroupIndex

  Call ChnMapLinCalc("[1]/Channel 1","[1]/Channel 2","[3]/Kanal 1","/unknowncolour_y",1,"const. value",NOVALUE,"analogue") '... XW,Y,X1,E,MapLinNovInterp,MapLinExtType,MapLinBdryVal,MapLinFctType
  Call ChnCopyExt("[3]/Kanal 1",2,1)      '... SourceChn,TargetGroupIndex,TargetChnIndex
  Call ChnPropValSet("[2]/Kanal 1","name","unknowncolour_x")
  Call ConfigStat

  for g = 3 to groupcount
    Call ChnSub("[2]/unknowncolour_y","["&g&"]/Kanal 2",groupname(g)) '... Y,Y1,E
    Call StatBlockCalc("Channel","1-","[2]/"&groupname(g)) '... StatDirec,RowNoStr,ChnNoStr
      if g=3 or ChnPropValGet("/"&groupname(g), "ResultStatDeviation") < stdev then
        stdev = ChnPropValGet("/"&groupname(g), "ResultStatDeviation")
        col = groupname(g)
      end if
  next

  msgbox col
end if

Ingo Schumacher
Systems Engineering Manager CEERNational Instruments Germany
Message 7 of 9
(4,533 Views)
Hallo IngoS,
 
Vielen Dank für Ihren Hinweis!Smiley Very Happyes funktioniert, wie ich machen möchte!
Mit DIAdem-Hilfe versuche ich jetzt die allen Befehle zu verstehen.
 
MfG
 
NI428
0 Kudos
Message 8 of 9
(4,518 Views)

Hallo IngoS,

Ich habe noch ein Problem mit meiner Aufgabe,habe Ihnen eine Email geschickt.

Danke für die Hilfe,

NI428

0 Kudos
Message 9 of 9
(4,370 Views)