|
|
Zeitdiskrete Signale in Vektoren abspeichern |
|
sarah88 |
Forum-Anfänger
|
|
Beiträge: 19
|
|
|
|
Anmeldedatum: 13.01.16
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 19.01.2016, 17:22
Titel: Zeitdiskrete Signale in Vektoren abspeichern
|
|
Hi,
kurze Frage,
ich bekomme zeitgleich Daten über 3 Signale alle 1,2 Sekunden rein.
Ich möchte die Werte der drei unterschiedlichen Signale für jeden Zeitschritt in einen einzelnen temporärenVektor speichern.
Ich habe also meine Signale
-->... A3 A2 A1
-->... B3 B2 B1
-->... C3 C2 C1
nun möchte ich haben:
Vektor0 = [A1 B1 C1];
Vektor1 = [A2 B2 C2];
...
Wie mache ich das möglichst effizient?
Danke und Grüße#
eure Sarah
|
|
|
|
|
DSP |
Forum-Meister
|
|
Beiträge: 2.117
|
|
|
|
Anmeldedatum: 28.02.11
|
|
|
|
Wohnort: ---
|
|
|
|
Version: R2014b
|
|
|
|
|
|
Verfasst am: 19.01.2016, 18:29
Titel:
|
|
Hallo,
das ist an Hand deines Bespiels schwer zu sagen. Was bedeutet für dich effizient? Wie sehen denn deine Signale aus? Sind es z.B. nur 10 Messwerte für jedes Signal vom Datentyp double? Was erfolgt anschließend mit den Daten, wofür vielleicht ein möglichst einfacher Zugriff benötigt wird.
Evtl. ist ja ein struct nützlich...
Gruß DSP
|
|
|
sarah88 |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 19
|
|
|
|
Anmeldedatum: 13.01.16
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 19.01.2016, 23:31
Titel:
|
|
Hi,
für mich bedeutet effizient einfach in wenigen Schritten und vorallem temporäre Speicherung.
Es sind Sensormesswerte, welche in einem festen Abstand reinkommen.
Da kommen in paar Minuten schon einige Daten zusammen.
Nebenher läuft ein Timer ab, welcher die absolute Lebensdauer des Zeilenvektors darstellt. Nach Ablauf der Zeit (x Sekunden) wird der Zeilenvektor gelöscht. Nehmen wir an es sind 3000 Messwerte, welche nacheinander verarbeitet werden sollen. Bedingt durch das restliche Matlabmodell können nur 15 Timer implementiert werden, dh. max. 15 Zeilenvektoren müssen (EVTL.) zwischengespeichert werden.
Die Nutzung eines structs halte ich nicht für sinnvoll, da es aufgrund der vielen Daten sonst biblische Ausmaße annehmen kann. Außerdem könnte der Zugriff auf den Vektor dann evtl. kompliziert sein oder?
|
|
|
Jan S |
Moderator
|
|
Beiträge: 11.057
|
|
|
|
Anmeldedatum: 08.07.10
|
|
|
|
Wohnort: Heidelberg
|
|
|
|
Version: 2009a, 2016b
|
|
|
|
|
|
Verfasst am: 20.01.2016, 12:25
Titel:
|
|
|
|
|
HAllo sarah88,
Zitat: |
für mich bedeutet effizient einfach in wenigen Schritten und vorallem temporäre Speicherung. |
Das verstehe ich nicht. Alles, was man nicht in Stein meißelt, ist "temporär". Was beduetet "wenige Schritte"?
Zitat: |
Es sind Sensormesswerte, welche in einem festen Abstand reinkommen.
Da kommen in paar Minuten schon einige Daten zusammen. |
Was bedeutet das? Geht es um hunderte Giga-Bytes oder nur um ein paar Kilo-Byte?
Zitat: |
Nebenher läuft ein Timer ab, welcher die absolute Lebensdauer des Zeilenvektors darstellt. |
Das ist ein kryptischer Satz. Ein Timer, der die "absolute" "Lebensdauer" "darstellt" und um welchen "Zeilenvektor" geht es?
Zitat: |
Bedingt durch das restliche Matlabmodell können nur 15 Timer implementiert werden, dh. max. 15 Zeilenvektoren müssen (EVTL.) zwischengespeichert werden. |
Ich kann mir nicht vorstellen, wieso ein "Matlabmodell" die Anzahl der Timer begrenzen könnte. Aber spielt dieses Detail eine Rolle?
Was sind "biblische Ausmaße"? Versuche blumige Ausdrucksweise zu vermeiden. Wenn es um Computerprogramme geht, sind sie einfach nicht hilfreich. Manche User empfinden schon ein paar kB als viel, weil sie es als Text-File nicht mehr durchlesen könnten. Andere bekommen 10 GB pro Sekunde und messen über Zeiträume von Tagen.
Die generelle Regel zum interativen Füllen von Vektoren ist die Pre-allokation: Lasse niemals ein Array iterativ wachsen. Es ist viel effizienter 10 mal mehr Speicher-Platz als benötigt auf einmal zu reservieren (so lange es ins RAM passt), als ein Array in vielen Schritten wachsen zu lassen.
Einen konkreten Ratschlag zur Umsetzung in Code kann man geben, wenn Du Deinenbisherigen Code postest und am besten die mit den Profiler ermittelten Bottlenecks kennzeichnest.
Gruß, Jan
|
|
|
sarah88 |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 19
|
|
|
|
Anmeldedatum: 13.01.16
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 20.01.2016, 18:20
Titel:
|
|
|
|
|
Hi Jan,
Ich habe mal ein Flussdiagramm angehängt, mit welcher mein Vorhaben vereinfacht dargestellt werden soll. Das Flussdiagramm ist auch die Vorbereitung auf ein Simulink-Modell, welches ich erstellen will. Das Ganze stellt wie gesagt einen Puffer dar, welcher die einkommenden Daten zwischenspeichert.
Der Block mit den Abfragen etc. soll eben als Matlab-FCN-Block erstellt werden. MMn können dadurch Afragen, Timer etc. am schnellsten und unkompliziert dargestellt werden.
Ich wollte das Ganze eben erst mal als Code haben, bevor ich Frage, wie man das vielleicht einfach in Simulink lösen kann (Ich weiß, dass das die PROGRAMMIERUNG-Abteilung ist).
Ist das soweit verständlich mit den bisherigen Informationen
Mir ist klar, dass es kein Problem darstellt, mehr Timer zu implementieren, nur will ich das Ganze erst mal auf kleiner Ebene mit kleinem Input lauffähig haben will, bevor ich tage lang mit der Vorbereitung beschäftigt bin aber eigentlich noch nichts läuft.
Hinter den Signalen verbergen sich einfache Skalare bzw. Ganz- und Gleitkommazahlen.
Einen bisherigen Code habe ich nicht bzw. nur sporadisch in den anderen Threads von mir.
Gruß
Sarah
Beschreibung: |
|
Download |
Dateiname: |
Unbenannt.PNG |
Dateigröße: |
15.07 KB |
Heruntergeladen: |
518 mal |
|
|
|
DSP |
Forum-Meister
|
|
Beiträge: 2.117
|
|
|
|
Anmeldedatum: 28.02.11
|
|
|
|
Wohnort: ---
|
|
|
|
Version: R2014b
|
|
|
|
|
|
Verfasst am: 20.01.2016, 21:24
Titel:
|
|
|
|
|
Hallo,
sarah88 hat Folgendes geschrieben: |
Das Flussdiagramm ist auch die Vorbereitung auf ein Simulink-Modell, welches ich erstellen will. Das Ganze stellt wie gesagt einen Puffer dar, welcher die einkommenden Daten zwischenspeichert.
|
In dem Fall erachte ich eine Diskussion/Hilfestellung für Matlab als relativ überflüssig, da die Umsetzung i.d.R. unterschiedlich ist. Simulink bietet z.B. einen
Buffer
-Block oder einen
Stack
-Block (DSP System Toolbox vorausgesetzt) die möglicherweise nützlich sind. Dazu muss man sich aber keine Gedanken um eine Matlab Umsetzung machen
Ohne weitere Kenntnisse über den Programmablauf halte ich nach wie vor einen struct für geeignet. Offensichtlich sind es ja nicht übermäßig viele Daten. Der struct bietet den Vorteil des einfachen Zugriffs auf die struct Felder und man muss nicht mit vielen Variablen arbeiten, was sowohl die Lesbarkeit eines Programmcodes verbessert als auch man leichter den Überblick behält.
Ansonsten solltest du besser konkrete Fragen zu einzelnen Themen stellen...die Grafik ist schön und gut, aber weit von einer Umsetzung in Programmcode entfernt. Da wir deine Aufgabe nicht kennen, ist es bei solchen allgemein gehaltenen Fragen schwer wirklich konkrete Hilfestellung zu geben.
Gruß DSP
|
|
|
sarah88 |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 19
|
|
|
|
Anmeldedatum: 13.01.16
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 28.01.2016, 17:16
Titel:
|
|
habe es schon selbst gelöst und umgesetzt, DANKE!
|
|
|
Patrick_Account |
Forum-Newbie
|
|
Beiträge: 2
|
|
|
|
Anmeldedatum: 20.01.16
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 09.02.2016, 13:58
Titel:
|
|
Hallo Sarah88,
ich stehe genau vor dem selben Problem.
Wäre dir sehr dankbar, falls du dein Simulink Modell mir zukommen lassen könntest!
Vielen Dank im Voraus!
|
|
|
|
|
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 - 2024
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.
|
|