WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Zeitdiskrete Signale in Vektoren abspeichern

 

sarah88
Forum-Anfänger

Forum-Anfänger


Beiträge: 19
Anmeldedatum: 13.01.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.01.2016, 18:22     Titel: Zeitdiskrete Signale in Vektoren abspeichern
  Antworten mit Zitat      
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
Private Nachricht senden Benutzer-Profile anzeigen


DSP
Forum-Meister

Forum-Meister



Beiträge: 2.117
Anmeldedatum: 28.02.11
Wohnort: ---
Version: R2014b
     Beitrag Verfasst am: 19.01.2016, 19:29     Titel:
  Antworten mit Zitat      
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...

Code:

% 1. Messreihe
Signals(1).A = ...
Signals(1).B = ...
Signals(1).C = ...

% 2. Messreihe
Signals(2).A = ...
Signals(2).B = ...
Signals(2).C = ...

% Zugriff auf alle Messreihen von Signal A
Signal.A
 



Gruß DSP
Private Nachricht senden Benutzer-Profile anzeigen
 
sarah88
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 19
Anmeldedatum: 13.01.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.01.2016, 00:31     Titel:
  Antworten mit Zitat      
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?
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 20.01.2016, 13:25     Titel:
  Antworten mit Zitat      
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
Private Nachricht senden Benutzer-Profile anzeigen
 
sarah88
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 19
Anmeldedatum: 13.01.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.01.2016, 19:20     Titel:
  Antworten mit Zitat      
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

Unbenannt.PNG
 Beschreibung:

Download
 Dateiname:  Unbenannt.PNG
 Dateigröße:  15.07 KB
 Heruntergeladen:  487 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
DSP
Forum-Meister

Forum-Meister



Beiträge: 2.117
Anmeldedatum: 28.02.11
Wohnort: ---
Version: R2014b
     Beitrag Verfasst am: 20.01.2016, 22:24     Titel:
  Antworten mit Zitat      
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 Wink

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
Private Nachricht senden Benutzer-Profile anzeigen
 
sarah88
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 19
Anmeldedatum: 13.01.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 28.01.2016, 18:16     Titel:
  Antworten mit Zitat      
habe es schon selbst gelöst und umgesetzt, DANKE!
Private Nachricht senden Benutzer-Profile anzeigen
 
Patrick_Account
Forum-Newbie

Forum-Newbie


Beiträge: 2
Anmeldedatum: 20.01.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 09.02.2016, 14:58     Titel:
  Antworten mit Zitat      
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!
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

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 | goMatlab RSS Button 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.