Approximationkurve aus mehrehe Messpunkte

Gast #1383167
Lesenswert?

Hallo Leute

ich beschäftige mich grad mit Matlab und habe dazu eine  Frage.
ich habe hier Daten  mit mehr als 500 Messpunkte.   Zwischen den 
einzelnen Punkten tretten Nullstellen auf.

nun möchte ich mit den von Null  verschiedene Punkte, eine Kurve 
darstellen, die sich an diesen Punkte annährt.
Hat da jemenad eine Idee wie diese zu realisieren ist.

Eine Mittelung ist auch nicht die Lösung,  da die Null-Werte auch 
betrachtet werden.

danke für Hilfe
Sebastian
#1383224
Lesenswert?

Häufig funktionieren fertige Algorithmen auch wenn du die "0" durch 
"NaN" ersetzt.

Weitere Informationen zur Toolbox die ich meinte finden sich unter: 
http://www.mathworks.de/products/curvefitting/description1.html
Allerdings muss die nicht unbedingt bei dir auch installiert sein.

Mit welcher Art von Kurve willst den annähern (Polygon, Spline,.. ) ?
#1383279
Lesenswert?

Jungs, mal in nen Mathebuch kucken hilft, in diesem Falle lineare 
Algebra. Der große Gauß sagt, dass das lineare Gleichungssystem A*x=y 
durch x=inv(A'A)A'y im Sinne minimaler Fehlerquadrate gelöst wird. Damit 
kann man wunderbar Polynome fitten, in diesem Fall eine Parabel in 
Meßwerte gefittet. Nulen in Matlab rauswerfen ist auch trivial.

Da braucht man keine Toolbox zu, nix.

Math rulez!
Cheers
Detlef

y=[1 0 2.5 0 0 4.5 0 3.5 2.5 0 1].';
x=(1:length(y));
x=x(:);
ind=find(y~=0);
xx=x(ind);
yy=y(ind);
M=[xx.*xx xx ones(length(xx),1)];
coff=inv(M'*M)*M'*yy;
xxx=linspace(min(x),max(x),1000).';
yfit=[xxx.*xxx xxx ones(length(xxx),1)]*coff;
plot(xxx,yfit,'b.-',x,y,'r.-')
Angehängte Dateien:
Gast #1383308
Lesenswert?

Danke detlef
es scheint eine gzute lösung zu sein.

aber bei:
>> ind=find(y~=0);

habe ich in meinem Vektor NaN anstatt 0.

das Ergebniss ist dann nicht mehr richtig.  ich habe in der Gleichung 
mit 'NaN' versucht. auch ohne erfolg.
hast jemand  da bitt ein Tricks.

in einem If-Anweisung zu konvertieren   von NaN in Nullen  klappt auch 
nicht.


danke
Persönliche Seite #1383486
Lesenswert?

Wenn es nur darum geht, eine Menge Meßwerte durch eine mathematische 
Kurve mit bestimmten Genauigkeits- und Aufwandsanforderungen zu 
beschreiben, ist dieses Tool hier genau richtig. Dort bekommst du 
Vorschläge fürs Fitten bis zum Abwinken. Such dir dann einfach die für 
dich passenste Approximation aus.

http://zunzun.com/


Das ist auch nett:
http://www.softintegration.com/chhtml/lang/lib/libch/numeric/CGI_Curvefit.html


Gruß -
Abdul
Gast #1397944
Lesenswert?

Moin,

aus Sicht der Signalverarbeitung stellt Dein Problem ein Signal mit 
hohen Freuqenzen dar, die sich durch "schnelle" Änderungen darstellen.

Wenn Du nun die hohen Frequenzen herausfilterst, wird das Signal 
automatisch geglättet.

Dazu genügt es, das Signal durch ein FIR-Tiefpass prozessieren zu 
lassen. FIR-Filter sind einfach zu realisieren und sollten kein 
unüberwindbares Problem darstellen. Guck einfach, wo Du die 
Grenzfrequenz hinlegst, damit das Ergebnis optimal wird.

Wenn Du das Problem besonders elegant und optimal lösen willst, kannst 
Du auch ein CIC-Interpolator (Cascaded Integrator Comb nach Hogenauer) 
einsetzen. Die Theorie hat's in sich aber die Realisierung ist ebenfalls 
einfach.

Gruß

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren