INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.


Antwort schreiben 

Signalverarbeitung



Wenn dein Problem oder deine Frage geklärt worden ist, markiere den Beitrag als "Lösung",
indem du auf den "Lösung" Button rechts unter dem entsprechenden Beitrag klickst. Vielen Dank!

22.12.2006, 18:48
Beitrag #11

Kopmann Offline
LVF-Grünschnabel
*


Beiträge: 41
Registriert seit: Nov 2006

8.0 Student
2005
kA

23552
Deutschland
Signalverarbeitung
' schrieb:- Eine ForSchleife würde den ganzen Datensatz abarbeiten. Wieviele Zyklen du damit auswertest hängt ja sowieso (auch jetzt schon) vom Datensatz ab.
Zur Zeit brichst du ja einfach bei einem bestimmten Index ab. Dies ist aber sehr willkürlich, da das ja voraussetzt, dass du schon weißt, nach wieviele Daten deine 5 Zyklen fertig sind.

- Das Punkt zu Punkt differenzier Vi, das du benutzt arbeitet wie folgt:
Es nimmt das x, das du als Eingang gibst und subtrahiert davon das x, das du als Eingang gegeben hast 2 Aufrufe davor. Dann dividiert es das ganz noch durch 2*dt.
Wenn es erstmals aufgerufen wird, oder du initialisieren auf true setzt zieht er die Anfangsbedingung von x ab.
(Du siehst also die Funktion funktioniert NUR in einer Schleife, da einmaliges Aufrufen dem Vi nur einen Punkt gibt und nichts, wozu es die Differenz bilden kann)

Bsp: du rufst das Vi mit den Zahlen {1,2,3,4,5} hintereinander auf. Anfangswert setzt du 0 (standard), dt=1. Ergebnis dann also:
1. 1 - 0 / 1 = 1
2. 2 - 0 / 2 (2*dt) = 1
3. 3 - 1 (2 vorher) / 2 = 1
4. 4 - 2 / 2 = 1
5. 5 - 3 /2 = 1;

Initialisieren bewirkt also, dass er für die ersten Werte wieder die Anfangsbedingung nimmt und nicht die Werte die zuletzt waren.


Hallo Kvasir,

es ist echt toll das du mir versuchst zu helfen. Ich habe übrigens die Testdatendatei hochladen können! Siehe oben! Vielleicht probierst du einmal das Programm aus!

Ich werde deinen Vorschlag einmal ausprobieren. Was mich nur wundert, warum muss ich mit einer Initialisierung nur beim Differenzialvi arbeiten und nicht bei den andern (Nulldurchgang und Max mit Schwellwertsuche)?
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
22.12.2006, 21:26
Beitrag #12

Kvasir Offline
LVF-Freak
****


Beiträge: 642
Registriert seit: May 2006

10
2004
DE_EN

0000
Oesterreich
Signalverarbeitung
Werds mir morgen mal anschauen.

A few weeks of developement and testing can save a WHOLE afternoon in the library!
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
23.12.2006, 17:05 (Dieser Beitrag wurde zuletzt bearbeitet: 23.12.2006 17:44 von Kvasir.)
Beitrag #13

Kvasir Offline
LVF-Freak
****


Beiträge: 642
Registriert seit: May 2006

10
2004
DE_EN

0000
Oesterreich
Signalverarbeitung
Habe dir dein Programm nun umgeschrieben. Schau mal ob das passt.

Der Fehler in deinem Programm liegt definitiv bei initialisieren. Wenn ich deine Variante öfter hintereinander laufen lasse bekomme ich auch jedes mal andere Werte. Ich habe also alles komplett neugeschrieben, somit weiß ich auch nicht, wo das Problem genau gelegen hatSmile

Ich habe auch die Programmstruktur enorm vereinfacht. Dein Programmierstil ist, um es freundlich zu formulieren, "LV-untypisch".

- Versuch lokale Variable zu vermeiden. Diese brauchen viel Speicher und sind enorm unübersichtlich. Es gibt Situationen, wo man auf diese zurückgreift, aber das ist eher die Ausnahme, nicht (wie bei dir) die Regel.

- Ich habe deine Cases in einen zusammengefasst. An eine Casestruktur kann man nicht nur einen Boolean anlegen, sondern auch Zahlen, Enums, ... Das Prinzip nach dem die Schleife nun arbeitet nennt man "state machine". Du findest hier im Forum schon einige Beiträge dazu.

- Viele Array Funktionen brauchen keinen Index. Das ist zwar eine Kleinigkeit, aber so hältst du dein Programm von unnötigen Drähten frei. Auch die "Indexing" Funktion einer For Schleife ist sehr brauchbar. Dadurch sparst du es dir überhaupt die einzelnen Elemente herauszuholen aus dem Array. Das erledigt schon die Schleife.

Ich hoffe das Programm funktioniert nun wie gewünscht. Wenn du noch Fragen hast zu dem Programm meld dich.
Ansonsten wünsch ich schonmal ein frohes Fest.

Gruß


Angehängte Datei(en) Thumbnail(s)
   

Sonstige .vi  Volsuche.vi (Größe: 42,12 KB / Downloads: 133)

A few weeks of developement and testing can save a WHOLE afternoon in the library!
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
23.12.2006, 17:43
Beitrag #14

Kvasir Offline
LVF-Freak
****


Beiträge: 642
Registriert seit: May 2006

10
2004
DE_EN

0000
Oesterreich
Signalverarbeitung
Hab herausgefunde, was dein Problem war:

Beim ersten Zyklus klappt alles.
Beim zweiten mal durchlaufen funktioniert es bis zum ersten mal die Diff Funktion aufgerufen wird. Hier passiert folgendes:

Die Funktion zieht vom aktuellen Wert den letzten Wert ab. Der letzte Wert in der Diff Funktion ist ja das Minimum vom ersten Zyklus.
Dieser Wert ist jedoch "negativer" als der aktuelle Wert, dadurch wird die Differenz positiv und dein Case ist schon erfüllt.

Das Selbe passiert nun auch beim Maximum suchen. Das Programm befindet sich ja erst im fallenden Ast, da das gefundene Minimum ja keines ist und schon wieder ist die Bedingung sofort erfüllt. Deswegen liegen die falschen Werte auch direkt hintereinander.

Des Problems Lösung ist in meinem Programm schon eingebaut. Initialisieren mit einer "genügend negativen" Anfangsbedingung.

Gruß

A few weeks of developement and testing can save a WHOLE afternoon in the library!
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
23.12.2006, 18:19
Beitrag #15

Kopmann Offline
LVF-Grünschnabel
*


Beiträge: 41
Registriert seit: Nov 2006

8.0 Student
2005
kA

23552
Deutschland
Signalverarbeitung
' schrieb:Hab herausgefunde, was dein Problem war:

Beim ersten Zyklus klappt alles.
Beim zweiten mal durchlaufen funktioniert es bis zum ersten mal die Diff Funktion aufgerufen wird. Hier passiert folgendes:

Die Funktion zieht vom aktuellen Wert den letzten Wert ab. Der letzte Wert in der Diff Funktion ist ja das Minimum vom ersten Zyklus.
Dieser Wert ist jedoch "negativer" als der aktuelle Wert, dadurch wird die Differenz positiv und dein Case ist schon erfüllt.

Das Selbe passiert nun auch beim Maximum suchen. Das Programm befindet sich ja erst im fallenden Ast, da das gefundene Minimum ja keines ist und schon wieder ist die Bedingung sofort erfüllt. Deswegen liegen die falschen Werte auch direkt hintereinander.

Des Problems Lösung ist in meinem Programm schon eingebaut. Initialisieren mit einer "genügend negativen" Anfangsbedingung.

Gruß

Hallo Kvasir

Ich bedanke mich für deine Hilfe, obwohl ich erst Mal eine Menge zu verdauen habe!!!

Ich habe selber versucht mit den Schieberegistern klar zu kommen es aber nicht geschafft. Daher habe ich mich letzt endlich für das Forum entschieden und.

Auf jeden Fall werden dir jetzt viele junge Doktorandinnen dankbar sein, weil sie die Dateien nicht mehr per Hand auswerten müssen.

Kopi
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
09.01.2007, 17:55
Beitrag #16

Kopmann Offline
LVF-Grünschnabel
*


Beiträge: 41
Registriert seit: Nov 2006

8.0 Student
2005
kA

23552
Deutschland
Signalverarbeitung
Hallo Kvasir,

hier ist das Programm.

Danke nochmals
Gerrit


Angehängte Datei(en)
Sonstige .vi  Endversion.vi (Größe: 51,04 KB / Downloads: 130)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
09.01.2007, 19:04
Beitrag #17

Kopmann Offline
LVF-Grünschnabel
*


Beiträge: 41
Registriert seit: Nov 2006

8.0 Student
2005
kA

23552
Deutschland
Signalverarbeitung
' schrieb:Hallo Kvasir,

hier ist das Programm.

Danke nochmals
Gerrit


Angehängte Datei(en)
Sonstige .vi  Versuch_1.vi (Größe: 113,43 KB / Downloads: 101)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
30
Antwort schreiben 


Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  Signalverarbeitung PatrickF1706 8 3.521 31.07.2018 13:11
Letzter Beitrag: PatrickF1706
  Signalverarbeitung mit Array tomi2107 2 3.561 21.10.2013 10:16
Letzter Beitrag: BsaiboT
  Sinus über Rauschen - Signalverarbeitung SoR 7 9.426 25.03.2011 07:34
Letzter Beitrag: SoR
  Signalverarbeitung eines Gyroskopes ToraBoraJack 8 7.305 16.03.2010 14:41
Letzter Beitrag: jg
  Signalverarbeitung Kopmann 2 3.474 26.01.2007 01:04
Letzter Beitrag: Kopmann
  Signalverarbeitung die zweite Kopmann 5 4.634 13.01.2007 20:16
Letzter Beitrag: Lucki

Gehe zu: