PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : MatLAB: Fehlerdarstellung



BlackDevil
23.04.2008, 20:43
Hi

Ich bin derzeit dabei mich mit Fehlerberechnung auseinander zu setzen (mehr oder weniger Notgedrungen). Nun bin ich bei dem Punkt angekommen meine Messwerte in MatLAB einzulesen und darzustellen.

Das ist nun weniger das Problem. Das Problem besteht eher darin das ich meine ~10.000 Messwerte (mal irgendeine Zahl genommen) aus einem Oszilloskop in MatLAB habe und nun eine Fehlerdarstellung mit Balken darstellen will.

Mein derzeitiger Code schaut so aus:

x=linspace(-10,10,10000);
y=exp(x);
e=std(y)*ones(size(x));
errobar(x,y,e)

Das ist mehr oder weniger aus der Matlab Hilfe zusammen geschustert. Problem: Er stellt 10.000 errorbars dar. Schlecht abzulesen.
Abhilfe schaffte erstmal der Plot der Urfunktion. Sah dann so aus:

x=linspace(-10,10,10000);
y=exp(x);
plot(x,y)
hold on;
x=linspace(-10,10,10);
y=exp(x);
e=std(y)*ones(size(x));
errorbar(x,y,e)


Optimal, ich hab jetzt zwei mal den Graphen geplottet und einmal mit Fehlerdarstellung. Problem: Ich habe 1. Unterschiedliche Fehlerintervalle bei Unterschiedlich vielen Messewerten, 2. das Problem das Graph 2 wesentlich Kantiger und ungenauer ist als Graph 1.

Was bringt mir Abhilfe? Was ermöglicht mir das Plotten der gemessenen Funktion, der erwarteten Funktion (eine Funktion habe ich ja immer - nehmen wirmal an ich messe Strom und Spannung an einem PTC) und das Plotten der Fehlerbalken (10stk)?

Wenn jemand eine Idee hat wäre ich sehr sehr Dankbar :)

goara
23.04.2008, 23:00
du hast messwerte und willst sie plotten ??
was tust du da mit dem errorbar ??
wie der plot aussieht kannst du dann ja frei wählen und die intervalle musst du auf nen festwert stellen, damit das immer gelich aussieht..
verstehe die frage nicht ganz..

Felix G
23.04.2008, 23:02
Naja, warum plottest du nicht deine Funktion normal, aber bei den Errorbars vielleicht nur jeden 500sten (natürlich gemittelt aus 500 Werten, damit du nicht versehentlich einen Ausreißer erwischst)?

BlackDevil
24.04.2008, 15:09
Ich weis wie ich die Funktion an sich plotte. plot() ebend.

Ich will nur eben noch den Fehler darstellen und 3 Bilder in einem haben:
- Gemessene Werte
- Errechnete Werte
- Fehlerintervalle

Das mit "jeden x-ten" ist eine Gute Idee. Wenn ich irgendwie einstellen kann das immer nach 10 Einser Schritten auf der X Achse ein Fehlerbalken kommt wär das Perfekt. Nur wie mach ich das?

goara
24.04.2008, 16:58
hast du die 3 messwerte (bzw fehlerwerte) als vektoren ??
dann machst du noch nen vektor von 1 bis länge und plottest jeweils den wert da drüber.
wenn du mehrer plots in einer figure willst gib es noch subplots
für den fehlerwert nimmst du eben nen vektor [ 10 20 30 .... ] über den du den fhelr plottest..
x ist der zeitvektor von 1 bis länge
y ist der zeitvektor in 10erschritten

x = [0:1:länge]
y=[0:10:länge]
subplot(3,1);
plot(x,Mess);
subplot(3,2);
plot(x,Rechen);
subplot(3,3);
plot(y,Fehler);

BlackDevil
24.04.2008, 19:51
Ich war mal so Frei und hab ein beispiel bil kreiert

Das machts Verständlich wo das Problem liegt und was ich als Ergebnis haben will (nur das die Kurven übereinander liegen sollen)
http://img403.imageshack.us/img403/6051/robottt1.th.jpg (http://img403.imageshack.us/my.php?image=robottt1.jpg)


Logisch: Je gröber die Kurve desto größer der Fehler.

Hab aber inzwischen eine Lösung gefunden. Das "in 10er Schritten" brachte mich darauf den x-Vektor konventionell zu bauen... Siehe hier:

http://img135.imageshack.us/img135/3320/robot2cz2.th.jpg (http://img135.imageshack.us/my.php?image=robot2cz2.jpg)

Aber ist die darstellung noch 100% genau? Bzw annähernd 100%? Sollte so passen oder

goara
24.04.2008, 23:34
ahh ok, jetz versteh ich mal wenigstens worum es geht.. war mir irgdnwie noch nich so klar bis jetz ;)
und was ist da jetz falsch an der ansicht, bzw was haettest du gern anders ??

BlackDevil
25.04.2008, 14:20
Bild 1 stellt mein Problem dar. Ich wollte mehrere Fehlerintervalle auf der gerechneten Kurve (hier e^x) darstellen und dort drüber dann die gemessene Kurve legen (das ist ja nicht das problem)

Bild 2 stellt dann meine Lösung dar - mit der Frage ob das so noch genau ist oder ob die Intervalle Falsch sind (aufgrund der Auflösung von 10 Schritten)

goara
25.04.2008, 14:46
also das sollte shcon genau sein. das einzige was sein kann, dass wenn du eine hochfrequentere kurve hast die errorbars mal zufällig in ein maximum/minuimum fallen,
ansosnten musst du eben immer vorher den mittelwert bilden (gausvertielung über x-wert oder so )

BlackDevil
25.04.2008, 15:06
Ich wüsste eben keine andere art die Balken darzustellen als über errorbar.

Aber gut, wir messen eh nur Strom und Spannung über Bauteilen dieses Semester, da sollte das ganze hinreichend genau sein.

Danke!