Verfasst am: 20.07.2015, 19:12
Titel: Ändern der Skalierung der Daten verzerrt sie als Kreis
Hallo zusammen,
ich stehe vor einem Problem und bin mir nicht sicher, woran es liegen kann.
Ich habe Datensätze von Rundheitsmessungen.
Ich würde die Datensätze gern im kartesischen Koordinatensystem als Kreise darstellen. Da die Abweichungen der Oberfläche nicht all zu groß sind, sieht man leider die Details nicht so gut, wenn man es als Kreis darstellt.
Also habe ich mal den Hintergrund abgezogen, um so die Skalierung zu ändern (siehe angehängte Beispielbilder).
Wenn ich das tue kommt jedoch ein Problem auf, dass die Daten nicht als Kreis dargestellt werden, sondern verzerrt als Zacken dargestellt werden.
Zur Umwandlung habe ich sowohl die pol2cart Funktion als auch selbst mit sin und cos umgerechnet. Ergibt immer das gleiche Bild.
Den Hintergrund ziehe ich wie folgt ab:
Hat jemand eine Idee, woher das kommt? Vielleicht bin ich ja nicht der Erste, der vor diesem Problem steht. Oder ist es ein bekanntes Problem in der Berechnung o.Ä.?
Ich wäre für jeden Hinweis dankbar.
du verschiebst die Daten ja nicht nur, sondern veränderst auch die Darstellung (hier wäre interessant, wie die Darstellung überhaupt erzeugt wird).
Es ist gut möglich, dass die Abweichungen in der Darstellung einfach nur daran liegen, dass du quasi hineinzoomst. Wenn du in der zweiten Darstellung die Skala änderst, sieht es vermutlich wieder besser aus.
Verfasst am: 21.07.2015, 10:44
Titel: Re: Ändern der Skalierung der Daten verzerrt sie als Kreis
Hallo TurboUlli,
An den Diagrammen fehlen Beschriftungen. Damit könnten sie auch eine Riesenschalnge darstellen, die einen Elefanten verschlungen hat. Alleine aus einem Diagramm kann man unmöglich herausfinden, wie die Daten erzeugt wurden und was zur Darstellung verwendet wurde. Deshalb kann man auch noch nicht sagen, wieso das Abziehen des Minimal-Wertes die beobachteten Veränderungen erzeugt.
Bitte poste den Code, der die Darstellungen reproduziert.
Der bisherige code macht genau das, was die Befehle vorschreiben. Wieso Du möchtest, dass die Zacken in einen andere Richtung verlaufen, musst Du also noch dazu erklären.
Entschuldigt bitte die Unvollständigkeit. Ich versuche es mal weiter auszuführen
Mein Code aufs Wesentliche herunter gebrochen sieht wie folgt aus:
Code:
% Daten ausgelesen % c = Öffnungswinkel in Grad % u = gemessener Wert (Abstand in µm)
c1 = data1(:, 4);
u1 = data1(:, 5);
% Etwas leeren Bereich wegschneiden, um eine bessere Skalierung zu haben
u1 = u1 - min(u1);
% Messwerte für ein kartesisches Koordinatensystem für eine Kreisform anpassen % Grad von c1 in rad umrechnen nicht vergessen [xk1, yk1] = pol2cart(c1.*(pi/180), u1);
Ich habe mal die Achsen im Bild beschriftet und das erste Beispiel noch mal hier angehängt.
Die y-Achse ist ein gemessener Abstandswert und die x-Achse ist der Öffnungswinkel des Tisches, der sich während der Messung dreht.
@Harald
Genau um die Darstellung geht es mir hier auch. Da die Variation im gemessenen Profil sehr klein ist, wollte ich quasi reinzoomen um die Feinheiten viel besser zu sehen. Dabei passiert es aber eben, dass es in der Kreisdarstellung verzerrt dargestellt wird, während es in der normalen Darstellung als Graph nicht verzerrt ist. Mit den unbeschnittenen Rohdaten passiert das ja nicht. Auch nicht, wenn ich sehr weit reinzoome. Der Fehler muss also irgendwo in der Berechnung liegen
Das ist der Code mit dem die vier Grafiken erzeugt wurden?
Das ist nur eine Grafik.
Wieso sieht man unten rechts ein Polar-Diagramm, obwohl die Daten per
pol2cart
in X/Y-Koordinaten transformiert wurden?
In diesem Polar-Diagramm ist eindeutig der Winkel nicht monoton. In dem gezeigten Code wird aber der Winkelverlauf nicht geändert, sondern nur der Radius.
So weit ich es sehe, erzeugt der gepostete Code nicht die Diagramme. Du hast eine Frage zum Code, den Du mit den Diagrammen erklären möchtest. Aber wenn beides nicht zusammen passt, ist eine Antwort nicht möglich.
Bitte poste den Code, der die gezeigten Diagramme produziert. Erst dann kann man das Problem finden. Bisher vermute ich, dass das obere Diagram einfach mit anderen Werten erstellt wurde.
entschuldige, ich wollte nicht zu viel unnötigen Code posten und habe es deshalb aufs Wesentliche beschränkt.
Was ich noch mache ist ein wenig formatieren und manuell mit einer selbst geschriebenen Funktion gestrichelte Kreise und Striche zu zeichnen, damit es mehr wie ein polar Diagramm aussieht.
Hier ist mal der gesamte Code:
Code:
% Daten auslesen % z = const während der Messung % c = Öffnungswinkel % u = gemessener Wert
% Etwas leeren Bereich wegschneiden, um eine schönere Skalierung zu haben
offset = 0.001; % Offset, damit alle Daten über 0 liegen
u1 = u1 - (min(u1) - offset);
% Messwerte für ein kartesisches Koordinatensystem für eine Kreisform anpassen % Grad von c1 in rad umrechnen nicht vergessen [xk1, yk1] = pol2cart(c1.*(pi/180), u1);
% LSC (least squares circle) fitten % das ist der blaue Referenzkreis bei der Kreisdarstellung der beschnittenen Daten % an den Messdaten wird hier nichts verändert % cp: Mittelpunkt, r1: Radius des Kreises [cp1, r1] = fitcircle([xk1'; yk1']);
Falls es jemand reproduzieren möchte und es sich näher anschauen möchte, habe ich im Anhang mal einen Datensatz hochgeladen. In meinen Beispielbildern vom Anfang habe ich ja zwei weitere Bilder, diese sind einfach von einem anderen Datensatz.
Ich habe mir die Daten mal angeschaut.
Sie sehen auch ohne Abziehen des Minimal-Wertes für den Radius merkwürdig aus. Auch dann gibt es Zacken, die nicht in Richtung Mittelpunkt weisen. Darum glaube ich, dass es hier kein Matlab-Problem ist, sondern an der Messmethode prinzipiell etwas anders läuft als gedacht.
Hm, schon merkwürdig. Ich habe die Rechenschritte angeschaut und es kann gar nicht so sein, dass die Zacken nicht zum Mittelpunkt weisen. Also tun sie es auch nicht. Es sieht nur so aus! Der Mittelpunkt liegt nicht in der Mittel des Kreises, sondern sa, wo die Zacken hinweisen. Due siehst an der Kurve, bei der Du x gegen y aufzeichnest, dass sich der Radius ähnliche wie eine Sinuskurve verhält, wenn man ihn gegen den Öffnungswinkel aufträgt. Das bedeutet, dass dies ein sehr exzentrischer Kreis ist. Und dann stimmt alles wieder. Die Grafik ist also realistisch und sieht nur unerwartet aus.
Zitat:
entschuldige, ich wollte nicht zu viel unnötigen Code posten und habe es deshalb aufs Wesentliche beschränkt.
Alles okay! Es ist ja Deine Frage und es ist nur für Dich ein Problem, wenn es keine Antwort gibt. Es ist auch ganz üblich, dass man Nachfragen im Forum stellt.
danke schön für die Unterstützung!
Dann habe ich tatsächlich an der falschen Stelle angesetzt um das Problem zu erkennen.
Schönen Gruß
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
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.