|
schuli18 |
Forum-Anfänger
|
|
Beiträge: 12
|
|
|
|
Anmeldedatum: 29.08.11
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 29.08.2011, 12:28
Titel: Buffer-Block
|
|
|
|
|
Hallo,
ich möchte den Buffer-Block nutzen und stehe nun vor einem Problem.
Ich habe ein Signal mit 11026 Werte und möchte dieses zu Frames mit 1024 Samples zusammen fassen. Somit stelle ich die Output buffer size auf 1024. Nun erhalte ich für mein erstes Frame 1024 Nullen. Soweit ist das auch noch klar, und in der Hilfe auch so beschrieben. Allerdings stören mich diese 1024 Nullen in meiner weiteren Signalbearbeitung. Gibts eine Möglichkeit diese Nullen bzw das komplette Frame wieder zu entfernen?
Das andere Problem ist, dass die letzte Eingangswerte verloren gehen. Also eigentlich müsste ich bei 11026 Werte 11 Frames erhalten (im letzten Frame werden die letzten 238 Werte mit Nullen aufgefüllt). Nun würde ich den Schluss ziehen, dass wenn der erste Frame nur Nuller enthält, müsste ich quasi 12 Frames ausgegeben bekommen. Ist aber leider nicht so. Es werden nur 11 Frames ausgegeben. Somit gehen die letzten 786 Werte meines Eingangssignals verloren. Hat mir hier jemand einen Tipp, was ich einstellen muss, dass nichts verloren geht?
Wäre super, wenn ihr mir da weiter helfen könntet, mir will nämlich nicht in den Kopf, wenn es so einen schönen Buffer Block gibt, dass er nicht das liefert, was man erwartet....
Bin sehr neu in der Matlab/Simulink Welt, daher auf eure Hilfe angewiesen
|
|
|
|
|
_Peter_ |
Moderator
|
|
Beiträge: 537
|
|
|
|
Anmeldedatum: 08.12.10
|
|
|
|
Wohnort: ---
|
|
|
|
Version: 7.10, 2010a
|
|
|
|
|
|
Verfasst am: 29.08.2011, 22:14
Titel:
|
|
Hallo schuli18,
habe leider im Moment kein Matlab/Simulink zur Hand um mir diesen Block anzuschauen, aber wie hast du die das Entfernen der ersten Nullen vorgestellt? Du könntest eventuell mit einem "Compare to", "Delay" und "Switch" Block diesen Frame unterdrücken.
Zum zweiten Problem fällt mir leider nichts ein erstmal. Versuch mit der Output buffer size mal 12 Frames zu provozieren, falls das klappt.
Morgen schaue ich mir mal diesen Block an, da habe ich wieder Simulink zur Hand.
_________________
Gruß
Peter
_________________
goMatlab-Knigge - dran gehalten?!
Schon in den FAQ gesucht? Oder der MATLAB Hilfe?
Ist vielleicht bei den Skripten oder den Tutorials was für dich dabei?
|
|
|
schuli18 |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 12
|
|
|
|
Anmeldedatum: 29.08.11
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 30.08.2011, 07:38
Titel:
|
|
|
|
|
Hallo Peter,
danke für deine Antwort.
Ich werde die anderen drei Vorschläge nachher auch gleich mal ausprobieren.
Es muss nicht der Buffer Block sein, der mich zum Ziel führt, daher schreibe ich noch mal kurz, was ich brauche und wieso. Also ich lese ein Sprach/Audiosiganl mit zB 1024 Samples/Frame ein. Das Signal verarbeite ich dann in verschiedenen Blöcken. Manche Blöcke erfordern aber, dass das Signal samplebasiert ist. Somit nutze ich den Block Unbuffer, um die 11 Frames in 11026 Samples umzuformen (hierbei werden wohl schon die überschüssigen Nullen im letzten Frame entfernt. Allerdings kann ich darauf keinen Einfluss nehmen.
Nun muss ich die Samples zum Einen wieder in eine Datei schreiben, das soll wiederum framebasiert sein. Zum anderen verarbeite ich die Samples auch in einem Block, der ebenfalls ein frambasiertes Signal benötigt. Daher dachte ich, ich kann den Buffer Block nutzen, um das samplebasierte Signal in ein frambasiertes umzuwandeln.
Aber wie gesagt, ich bin auch für andere Ideen offen. Es ist nur wichtig, dass mein Signal nach der Verarbeitung wieder verlustlos hergestellt werden kann. Daher dürfen keine Werte verloren gehen. Und eigentlich auch keine hinzugefügt werden (Nullen im ersten Frame nach dem Buffer Block)
Dann erstmal wieder Danke für deine/eure Hilfen!
Grüße schuli18
|
|
|
DSP |
Forum-Meister
|
|
Beiträge: 2.117
|
|
|
|
Anmeldedatum: 28.02.11
|
|
|
|
Wohnort: ---
|
|
|
|
Version: R2014b
|
|
|
|
|
|
Verfasst am: 30.08.2011, 09:39
Titel:
|
|
Arbeitest du mit einer Abtastzeit (diskreten Zeitschritten)?
|
|
|
schuli18 |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 12
|
|
|
|
Anmeldedatum: 29.08.11
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 30.08.2011, 09:57
Titel:
|
|
Das Signal ist ein 8 bit Signal mit 11 kHz.
Ich lese es auch mit 8 bit ein. Später verändere ich für die Verarbeitung den Datentyp in double aber verändere nicht die Abtastrate.
Hoffe ich habe deine Frage damit beantwortet?
|
|
|
|
|
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.
|
|