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 

Array in seiner Größe begrenzen



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!

19.08.2013, 19:22 (Dieser Beitrag wurde zuletzt bearbeitet: 19.08.2013 19:23 von Hasenfuss.)
Beitrag #1

Hasenfuss Offline
LVF-Stammgast
***


Beiträge: 331
Registriert seit: Dec 2012

2012
2012
DE



Array in seiner Größe begrenzen
Guten Abend!

Beim Signalverlaufsdiagramm besteht die Möglichkeit, durch Festlegen einer Historienlänge die Größe des "Arrays" in dem Diagramm zu begrenzen. Neue Werte werden im Array hinten angefügt und die vorigen einfach vorne abgeschnitten.

Bei den anderen Diagrammtypen geht das nicht, je mehr Werte ich an die Anzeige übergebe, um so größer wird das Array mit den Datenwerten. Also muss ich das Array auf eine maximale Größe begrenzen.

Mein bisheriger Ansatz geht dahin, dass ich Vergleiche durchführe, darin sind:

max: Maximalgröße Array
ist: Anzahl aktueller Werte im Array
neu: Anzahl neuer Werte, die hinzukommen
leereArray(Anzahl): Die Elemente im Array werden von Null bis Anzahl im Array von vorn abgeschnitten

Im Pseudocode:

if neu <= max
if (max-ist) > neu
leereArray(neu-ist)
else
nichts
endif
else
leereArray(max)
kürze neu auf max-Länge
endif

Die drei Bilder von meinem LabVIEW-Programm zeigen das, wie ich es umgesetzt habe. Es scheint auch so soweit zu funktionieren, denn ich kann die Daten mir so in einem Signalverlauf anzeigen lassen (tut mir leid, dass ich nur die Bildausschnitte zusenden kann, aber dafür hab ich versucht, im Pseudocode kurz zu erklären, was ich dort konstruiert hab).

Meine Frage - gibt es vielleicht eine simplere Lösung für mein Problem? Ich habe dann noch versucht herauszufinden, wie man einen FiFo in LabVIEW realisieren kann, bis mir dann aber bewusst wurde, dass ich ja keinen FiFo brauche, sondern das Array in seiner größe begrenzen muss, denn bei jedem Aktualisierungsvorgang für die Anzeige wird ja das ganze Array neu geschrieben (da ich nicht mehr den Signalverlaufsgraph mit der Historienlänge verwende). Somit ist ein FiFo (der sich einfach mit einer Queue realisieren ließe) für meinen Anwendungsfall nicht zu gebrauchen.

Falls mir von Euch jemand einen Tipp hat, nach welchen anderen Stichworten ich suchen könnte, würde ich mich sehr freuen.


Angehängte Datei(en) Thumbnail(s)
           
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
20.08.2013, 07:04
Beitrag #2

SeBa Offline
LVF-Guru
*****


Beiträge: 2.025
Registriert seit: Oct 2008

09SP1 & 10 FDS
2008
DE

65xxx
Deutschland
RE: Array in seiner Größe begrenzen
Du hast Queue ja schon selbst erwähnt...
und ich weiß nicht warum du die Idee verwirfst?

Funktioniert doch... du musst nur die Zeitachse deinen Wünschen entsprechend nachführen,
da die nur beim SVD automatisch weiterläuft.

   
   

Gruß SeBa

Dieser Beitrag soll weder nützlich, informativ noch lesbar sein.

Er erhebt lediglich den Anspruch dort wo er ungenau ist, wenigstens eindeutig ungenau zu sein.
In Fällen größerer Abweichungen ist es immer der Leser, der sich geirrt hat.

Rette einen Baum!
Diesen Beitrag nur ausdrucken, wenn unbedingt nötig!
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
20.08.2013, 07:58
Beitrag #3

Lucki Offline
Tech.Exp.2.Klasse
LVF-Team

Beiträge: 7.699
Registriert seit: Mar 2006

LV 2016-18 prof.
1995
DE

01108
Deutschland
RE: Array in seiner Größe begrenzen
Dafür gibt es die Funktion "Daten Queue Punkt für Punkt" - von NI allerdings sehr sorgfältig in der Palette versteckt. Habe jetzt auch die Suchfunktion bemüht, weil ich nicht mehr wußte wo. Und auch jetzt weiß ichs nicht, habe einfach "in das Blockdiagramm einfügen" geklickt. Aber: es gibt sie, ihr müßt es mir glauben. Blink
   
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
20.08.2013, 08:03 (Dieser Beitrag wurde zuletzt bearbeitet: 20.08.2013 08:05 von GerdW.)
Beitrag #4

GerdW Offline
______________
LVF-Team

Beiträge: 17.469
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Array in seiner Größe begrenzen
Hallo Hasenfuss,

Zitat:das Array in seiner größe begrenzen muss
Das kann man natürlich mit vielen IF-THEN-ELSE erledigen, aber eigentlich auch ganz ohne:
   

Ansonsten gelten natürlich die Hinweise zu den Möglichkeiten mit Queues! (Luckis Beispiel macht im Grunde das gleiche wie mein Snippet, ist außerdem ein gutes Einstiegsbeispiel für eine FGV und liegt unter Signalverarbeitung->PtByPt->Weitere Funktionen...)

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
20.08.2013, 08:49 (Dieser Beitrag wurde zuletzt bearbeitet: 20.08.2013 08:51 von Lucki.)
Beitrag #5

Lucki Offline
Tech.Exp.2.Klasse
LVF-Team

Beiträge: 7.699
Registriert seit: Mar 2006

LV 2016-18 prof.
1995
DE

01108
Deutschland
RE: Array in seiner Größe begrenzen
Ein kleiner Unterschied ist schon zwischen der Funktion QueueP2P und Gerds VI. Bei QueueP2p werden die neuen Punkte von hinten angehängt, bei Gerd vorn. Das Anhängen von vorn ist vielleicht eher gewünscht, wird aber erkauft mit einer 1000mal schlechteren Perfomanze. Einfügen eines neuen Elementes in einen Array am Index Null ist nach meinen Erfahrungen aber einer gewissen Arraygröße unvorstellbar langsam. Oder hat sich da in LV2013 etwas entscheidend geändert?
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
20.08.2013, 09:02 (Dieser Beitrag wurde zuletzt bearbeitet: 20.08.2013 09:09 von GerdW.)
Beitrag #6

GerdW Offline
______________
LVF-Team

Beiträge: 17.469
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Array in seiner Größe begrenzen
Um Luckis Bedenken zu zerstreuen, kann man die Reihenfolge von ArraySubset und Build Array auch umkehren:
   

Oder man arbeitet mit einem Array fester Größe:
    (evtl. noch die Initialisierung anpassen)
Auch hier kann man wieder beide Varianten haben: am Anfang oder Ende des Arrays neue Werte eintragen...

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
20.08.2013, 11:21
Beitrag #7

Hasenfuss Offline
LVF-Stammgast
***


Beiträge: 331
Registriert seit: Dec 2012

2012
2012
DE



RE: Array in seiner Größe begrenzen
Ich danke Euch allen für die anderen Möglichkeiten, wie ich mein Problem lösen kann und freue mich, so weitere neue Funktionen kennenzulernen, auf die ich bisher noch nicht gestoßen bin.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
22.08.2013, 15:27
Beitrag #8

THL Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 111
Registriert seit: May 2011

2012
2009
EN


Deutschland
RE: Array in seiner Größe begrenzen
(20.08.2013 09:02 )GerdW schrieb:  Um Luckis Bedenken zu zerstreuen, kann man die Reihenfolge von ArraySubset und Build Array auch umkehren:
Leider funktioniert dies so nicht, da beim Erreichen der endgültigen Array-Größe das Array nicht "durchgeschoben" sondern nur das letzte Element ausgetauscht wird. Da sollte man stattdessen am Indexeingang was verschalten, z.B. Arraysize(nach dem 'build array') minus (Maxsize-1)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
22.08.2013, 15:33
Beitrag #9

GerdW Offline
______________
LVF-Team

Beiträge: 17.469
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Array in seiner Größe begrenzen
Hallo THL,

stimmt!

So vielleicht:
   
Auch wenn das natürlich wieder deutlich weniger effizient hinsichtlich des Memory-Managers ist...

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Antwort schreiben 


Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
Question Große Zahlen in ein boolesches Array Konvertieren Baron 5 4.500 25.09.2018 10:36
Letzter Beitrag: Baron
  Numerisches Bedienelement maximale Signalsteigung begrenzen antwort 2 4.134 06.03.2017 13:46
Letzter Beitrag: antwort
  Signalverlaufslänge begrenzen Hasenfuss 4 3.869 26.04.2016 13:40
Letzter Beitrag: Lucki
  Einfachen Funktionsgenerator.vi generiertes Ausgangssignal begrenzen Moes 7 7.098 18.09.2015 11:38
Letzter Beitrag: Moes
  Arry statischer Größe mit Elementen dynamischer Größe Si0815 2 3.616 08.03.2015 18:09
Letzter Beitrag: Si0815
  Werte und Größe eines 2D-Array´s ändern xrzr 7 10.211 06.07.2014 18:09
Letzter Beitrag: GerdW

Gehe zu: