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

Messwerte glätten - interpolieren

 

baddy010
Forum-Anfänger

Forum-Anfänger


Beiträge: 21
Anmeldedatum: 16.06.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.07.2016, 14:01     Titel: Messwerte glätten - interpolieren
  Antworten mit Zitat      
Hallo zusammen,

habe nocheinmal eine Frage bezüglich einer Messdatenauswertung. Ich habe eine zweispaltige Matrix mit Messdaten erhalten. In der ersten Spalte habe ich die Zeit, in der zweiten Spalte den zugehörigen Messwert. Wenn ich die Daten plotte, sehe ich die ganzen Ausreißer, die ich gerne "glätten" möchte. Sie sollen sich an den Werten vorher und danach orienteiren, also eine Interpolation soll erfolgen. Ich habe es mit dem interp1-Befehl probiert, bekomme aber das gleiche Ergebnis wie die nicht geglätte Version. Ich habe dazu folgendes probiert:

[code]% Messung2 ist die 14707x2 Matrix, von der ich oben gesprochen habe
figure
x=Messung2(:,1);
v=Messung2(:,2);
xq=linspace(0,max(Messung2(:,1)),length(Messung2(:,1)));
vq = interp1(x,v,xq,'spline');
plot(xq,vq);
grid
[/code]

Ich hoffe, dass ihr versteht, was ich meine und mir jemand weiterhelfen kann. Danke!

Liebe Grüße
baddy010
Private Nachricht senden Benutzer-Profile anzeigen


kannstmasehn
Forum-Anfänger

Forum-Anfänger


Beiträge: 34
Anmeldedatum: 12.07.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.07.2016, 14:09     Titel:
  Antworten mit Zitat      
Du könntest den gleitenden Mittelwert deines Plots berechnen und plotten
Private Nachricht senden Benutzer-Profile anzeigen
 
baddy010
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 21
Anmeldedatum: 16.06.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.07.2016, 14:35     Titel:
  Antworten mit Zitat      
Wie baue ich den gleitenden Mittelwert am einfachsten auf?
Private Nachricht senden Benutzer-Profile anzeigen
 
kannstmasehn
Forum-Anfänger

Forum-Anfänger


Beiträge: 34
Anmeldedatum: 12.07.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.07.2016, 14:40     Titel:
  Antworten mit Zitat      
Von einem Vektor bilden und dann plotten über der Zeit
Private Nachricht senden Benutzer-Profile anzeigen
 
Hmpfx
Forum-Newbie

Forum-Newbie


Beiträge: 8
Anmeldedatum: 26.10.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.08.2016, 18:45     Titel:
  Antworten mit Zitat      
da ist die filter funktion 1.Ordnung am besten geeignet.

Code:

clear all;
clc;

x=0:1/20:5*pi;
y=sin(x);
lo=-0.2;
hi=0.2;
r=lo + (hi-lo) * rand(size(x));
y2=y+r;
window=10;
y3=filter(ones(1,window)/window,1,y2);
plot(x,y,x,y2,x,y3);
 
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.452
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 07.08.2016, 19:33     Titel:
  Antworten mit Zitat      
Hallo,

in der aktuellen MATLAB-Version gibt es dafür eine Funktion movmean , mit der man das direkt machen kann.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
baddy010
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 21
Anmeldedatum: 16.06.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 01.09.2016, 09:50     Titel:
  Antworten mit Zitat      
Ich muss diesen Beitrag nochmal ins Leben rufen. Leider kann ich die Funktion movmean nicht benutzen, weil ich nur eine Lizenz für die R2015b Version habe.

Daher die filter-Funktion, zu der ich eine Frage habe. Und zwar bekomme ich vom Prinzip her diese Art Messdaten raus. Man sieht im Bild Apolyfit, dass ein Messfehler im dargestellten Bereich vorkommt. Diesen würde ich gerne raus filtern. Dafür habe ich den Befehl filter wie unten im Code angewendet. Jedoch verändert sich im Verlauf nichts. Was mache ich falsch oder welche Funktion könnte mir dabei helfen, diesen Fehler zu glätten?

Hier mein Stück Code:

windowsize=5;
Afilter = filter(ones(1,windowsize)/windowsize,1,Channel_4_Data);

figure
plot(winkelint2(45000:50000),Channel_4_Data(45000:50000));
figure
plot(winkelint2(45000:50000),Afilter(45000:50000));

Vielen Dank!

Apolyfit.jpg
 Beschreibung:
Ungefilterte Daten

Download
 Dateiname:  Apolyfit.jpg
 Dateigröße:  59.03 KB
 Heruntergeladen:  494 mal
Afilterpolyfit.jpg
 Beschreibung:
Gefilterte Daten

Download
 Dateiname:  Afilterpolyfit.jpg
 Dateigröße:  58.75 KB
 Heruntergeladen:  546 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.452
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 01.09.2016, 10:05     Titel:
  Antworten mit Zitat      
Hallo,

probier doch mal eine größere windowSize. Es scheinen ja mehrere Messfehler am Stück zu sein.

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 - 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.