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

Interpolieren einer Datenreihe, die viele Nullen enthält

 

Funbrake
Forum-Anfänger

Forum-Anfänger


Beiträge: 14
Anmeldedatum: 19.10.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.10.2011, 09:52     Titel: Interpolieren einer Datenreihe, die viele Nullen enthält
  Antworten mit Zitat      
Hallo liebe GoMatlab-Gemeinde,
ich bin noch recht neu bei Matlab und komme daher mit einer "Anfänger"-Frage. (Die Suche hat mir leider nicht weiter geholfen).

Ich habe eine sehr lange Datenreihe, die ungefähr so aussieht:
Code:
a_original = 1 2 0 4 0 6 0 0 9 00 00 00 13 .... usw

Es stehen also in zufälligen Abständen Nullen in der Datenreihe, die ich durch Interpretation wegbekommen möchte.
Wie bringe ich Matlab dazu, mir diese Daten zu interpolieren (zunächst linear, später vlt. doch quadratisch), so dass aus dieser Datenreihe das hier wird:
Code:
a_interpol = 1 2 3 4 5 6 7 8 9 10 11 12 13 ... usw


Ich würde mich freuen, wenn mir jemand helfen könnte. Vielen Dank im voraus.
Private Nachricht senden Benutzer-Profile anzeigen


eupho
Forum-Meister

Forum-Meister


Beiträge: 777
Anmeldedatum: 07.01.09
Wohnort: Marburg
Version: R2009b
     Beitrag Verfasst am: 19.10.2011, 10:34     Titel:
  Antworten mit Zitat      
Hallo Funbrake,

hier eine Variante:

Code:
a = [1 3 0 7 0 11 0 0 17 0 0 0 25];
N = length(a);
pos = 1:N;
pos(a == 0) = [];
a(a == 0) = [];
result = interp1(pos, a, 1:N)
Private Nachricht senden Benutzer-Profile anzeigen
 
Funbrake
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 14
Anmeldedatum: 19.10.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.10.2011, 12:06     Titel:
  Antworten mit Zitat      
Vielen Dank für die schnelle Antwort, die mir tatsächlich mein gewünschtes Ergebnis liefert. Super!
Wäre noch jemand bitte so freundlich und würde mir die zwei Codezeilen für mich kommentieren, denn als Matlab-Newbie tu ich mich gerade (noch) schwer. Ich vermute, dass damit die "0"en gelöscht werden.
(Ich hoffe Ihr verzeiht mir diese zweite Frage und verweist mich nicht sofort auf Matlabgrundlagenbücher). Danke im voraus.
Code:
pos(a == 0) = [];
a(a == 0) = [];
Private Nachricht senden Benutzer-Profile anzeigen
 
eupho
Forum-Meister

Forum-Meister


Beiträge: 777
Anmeldedatum: 07.01.09
Wohnort: Marburg
Version: R2009b
     Beitrag Verfasst am: 19.10.2011, 12:47     Titel:
  Antworten mit Zitat      
Mit "a == 0" wird ein logischer Vektor erzeugt, der an den Stellen 1 ist, wo (in dem Fall) a == 0 ist. Und genau diese Stellen werden mit [] aus dem Vektor herausgenommen. Der Vektor ist danach entsprechend kürzer.
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.502
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 19.10.2011, 13:45     Titel:
  Antworten mit Zitat      
Hallo,

um dein Verständnis von MATLAB und dieser Notation insbesondere zu verbessern, solltest du dich aber eben systematisch einarbeiten. Insbesondere das Thema logische Indizierung (logical indexing) sollte interessant sein, da es genau deine Problematik trifft.

Grüße,
Harald
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 - 2025 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.