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

Rauheitsprofil rund darstellen

 

cheechoo
Forum-Anfänger

Forum-Anfänger


Beiträge: 18
Anmeldedatum: 17.10.15
Wohnort: Hamburg
Version: ---
     Beitrag Verfasst am: 19.04.2016, 13:06     Titel: Rauheitsprofil rund darstellen
  Antworten mit Zitat      
Halloooooo

Ich habe ein Rauheitsprofil eines Zylinders als Matrix 86000*2 vorliegen. Leider gibt die Messmaschine das natürlich als 2D-Plot aus so wie sie misst, also nicht radial bzw. als Kreis, sondern als gerader Plot. Ich möchte aber vor allem aus Darstellungsgründen das ganze in einem Polardiagramm darstellen, also wieder als geschlossenen Kreis. Die sicher auftretenden Rundheitsabweichungen mal außen vor gelassen bzw. vorher in der Messmaschine rausgefiltert.
So wie in diesem Beispiel sehen nun meine plots aus: http://www.jaeger-gmbh.com/sites/de.....ssprotokol_rauhigkeit.jpg

Die Umrechnung ins Polardiagramm ist über cart2polar ja izi, allerdings muss ich ja noch einen Weg finden, den Verlauf abzurunden. Von mir kann auch eine Gaussgrade durch den Verlauf gelegt werden, diese dann zu einem Kreis geschlossen und dann die Messwerte wieder um diese drumherum angeordnet werden. Da die Messstrecke ja auch aufs µ bekannt ist und die Messpunktanzahl durch die Taktung genau definiert ist, weiß ich das Punkt 1 der erste Punkt ist, der mit Punkt 86000 geschlossen werden muss.

Im zweiten Schritt kommen noch mehr Messungen an anderen Schnitten dazu und danach möchte ich alle Schnitte in einem zylindrischen Koordinatensystem zusammenfügen. Ein bisschen Reverse Enginnering betreibe ich damit quasi Cool Aber dafür dürfte sich ja in der Herangehensweise nichts ändern.

Kann mir jemand auf die Sprünge helfen? Ich habe keine Idee, wie ich den Kreis aus dieser Messstrecke bilden kann. Danke!
Private Nachricht senden Benutzer-Profile anzeigen


Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 19.04.2016, 16:12     Titel: Re: Rauheitsprofil rund darstellen
  Antworten mit Zitat      
Hallo cheechoo,

Welche Daten hast Du denn zur Verfügung? Was genau bedeutet "Rauhigkeitsprofil"? Wieso ist dies eine n x 2 Matrix? Sind das X- und Y-Koordinaten? Oder der Radius und der Winkel?
Wieso möchtest Du den Verlauf denn abrunden? Das ist ja nicht der Sinn einer Rauigkeitsmessung.
Wenn Du eine Gauss-Gerade durch die Messwerte legst, hast Du doch eine gerade. Wie willst Du die denn zu einem Kreis schließen?

Ich kann Dir also bisher noch nicht folgen.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
cheechoo
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 18
Anmeldedatum: 17.10.15
Wohnort: Hamburg
Version: ---
     Beitrag Verfasst am: 20.04.2016, 08:56     Titel:
  Antworten mit Zitat      
Zur Verfügung habe ich die Aufnahme eines Rauheitskeitsmessgerätes. Also 86 000 x-Werte mit dazu gehörenden 86 000 y-Werte, die wie im Beispiel oben gezeigt verlaufen. Diese werden ja in einem geraden Verlauf (normales kartesisches KO) angezeigt, da sie so ja auch aufgenommen werden (das Werkstück dreht sich, die Tastspitze bleibt starr und bewegt sich nur in y)

Ich möchte diese Messwerte aber wieder kreisrund darstellen. Ich möchte daran keine Rauheitsuntersuchungen mehr machen, also keine Rauheitskennwerte berechnen sondern eine möglichst realitätsnahe Darstellung der wahren Oberfläche erzeugen.
Am Ende nehme ich mit dem Messgerät mehrere Schnitte auf und packe das mit linearen Aufnahmen der Mantelfläche zusammen in ein zylindrisches KO.

Die Gaussgrade wäre somit nur nötig wenn sie helfen würde, den Kreis zu erzeugen. Ich weiß ja wie lang meine Taststrecke war, also wie lang die Gaussgrade ist. Somit kenne ich auch die Umfangslänge bzw. den Durchmesser des Kreises. Die ursprünglichen x-y-Werte müssen dann wieder drumherum angeordnet werden.

Ich hoffe mit der Skizze im Anhang kann ich etwas besser deutlich machen. Smile

umwandlung rauheit.png
 Beschreibung:

Download
 Dateiname:  umwandlung rauheit.png
 Dateigröße:  4.59 KB
 Heruntergeladen:  323 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 20.04.2016, 10:03     Titel:
  Antworten mit Zitat      
Hallo cheechoo,

Die 3 Diagramme im ersten Post sind zu klein um irgendetwas erkennen zu können.
Es ist immer noch nicht klar, was die Messwerte sind. Wenn nur y sich bewegt, wieso hat die Daten-Matrix dann 2 Spalten? Du hast ein Diagramm gezeigt, bei dem die Rauhigkeit des Radius gemessen wird. Ist das nun der X- oder der Y-Wert? Oder sind dies Kathesische Koordinaten?

Eigentlich benötigst Du nur den Mittel-Wert des Radius, oder?
Und damit kannst Du z.B. mit dem Befehl cylinder einen Zylinder zeichnen.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
cheechoo
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 18
Anmeldedatum: 17.10.15
Wohnort: Hamburg
Version: ---
     Beitrag Verfasst am: 20.04.2016, 10:14     Titel:
  Antworten mit Zitat      
Die Rohdaten, die die Maschine liefert und auf die ich aufbaue, sind reine x-y Koordinaten. Dabei verkörpern die x-Koordinaten die lineare Bewegung des Tasters, der normalerweise ja linear auf dem Werkstück verfährt und die sich dabei durch die Rauheit einstellende y-Auslenkung aufzeichnet, die Werkstückbefestigung bleibt starr. Hier in der radialen Messung bleibt allerdings die Tastnadel starr und das Werkstück wird rotiert. Die Rotation wird der Messsoftware dennoch als Translation vorgespielt, somit kommt dieses kartesische Diagramm zu Stande. Die Messsoftware nimmt die Daten so auf, als habe sie eine grade Fläche aufgenommen.

Aber dem ist ja nicht wirklich so, sondern die Fläche gehörte radial zu einem Zylinder. Und genau das möchte ich nun wieder darstellen. im Endziel will ich keinen Mittelwert haben, keinen Radius oder sonstiges. Ich möchte wirklich nur die aufgenommenen x-y-Werte Kreisrund anordnen, so wie ich es in meiner Skizze zeige. Wenn es dafür als "Hilfskonstruktion" die Gaussgrade benötigt, die dann zum Kreis geschlossen wird und als neue runde x-Achse dient, dann ist das auch ok.

Im Endeffekt betreibe ichd somit Reverse Engineering mit den Messwerten der realen Oberfläche...
Private Nachricht senden Benutzer-Profile anzeigen
 
luep
Forum-Anfänger

Forum-Anfänger


Beiträge: 25
Anmeldedatum: 11.07.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.04.2016, 11:42     Titel:
  Antworten mit Zitat      
Wenn ich das richtig verstehe, dann kann das doch nicht ganz so schwer sein.

Gehen wir mal von deiner letzten geposteten Skizze aus.

Du bekommst das höhenprofil mit der Länge x = 20 cm (angenommen). Dazu hast du die Y-Werte als höhe. Daraus ergibt sich dann beispielsweise
x1 =0 Y1=-0,2
x2=1 Y2=0,3
x3=3 Y3=0,5
X4=4 Y4 = 0,3
X5=5 Y5 = 0,2

Also müsste der Durchmesser ohne Fehler 20 cm betragen.

Die ersten 5 cm entsprechen 90°, die zweiten 180°, die dritten 270° und die letzten 360° bzw 0°

Dann den Pythagoras nehmen:

x1= 0 : 0(in y bei einem "perfekten" Kreis) + differenz (in y) (wobei differenz positiv oder negativ sein kann):

y mit rauheit= 0 + Differenz in y = 0 + (-0,2) = -0,2

--------------------------------------

x2= 1: (perfekter) Kreispunkt bei x=1 --> y = ?

y= a/sin(alpha)

da 5cm 90° entsprechen, entspricht 1cm 18°

--> y=1/sin( 18 )= 3,236...

Y2 mit rauhheit= 3,236 + Differenz in Y1 = 3,236 + +0,3 = 3,536

usw bis 5cm

Danach müssen die rechenregel anders sein (je nach KO-quadrant)


Wäre das evtl ein Lösungsansatz?

dumdidum jetzt muss zu jedem Punkt noch das Verhältnis x und y berechnet werden.

Mein Denkfehler ist oben noch, das bei x1=0 die Differenz(Rauheit) "voll" in x richtung gehen muss.

zwischen 0 und 5 cm die Differenz im Verhältnis berechnet werden muss und bei 5 cm "voll" in y Richtung.


Aber kannst ja erstmal gucken, ob das zum richtigen Ziel führt.
Private Nachricht senden Benutzer-Profile anzeigen
 
cheechoo
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 18
Anmeldedatum: 17.10.15
Wohnort: Hamburg
Version: ---
     Beitrag Verfasst am: 20.04.2016, 12:02     Titel:
  Antworten mit Zitat      
vielleicht ist es so besser erklärt:

eigtl ist es wurst dass es ein rauheitsprofil ist, folgender code:

Code:

x1 = linspace(0,50,100)
y1 = rand(100,1)
m = mean(y)*ones(100,1);
plot(x1,y1,x1,m);
 


zeichnet mit in ein kartesisches ks ein Profil, so wie ich es bekomme. Nun soll das ganze eben nicht nicht an einer linearen x-achse ausgerichtet werden. ich möchte die rote mittelwertslinie zu einem Kreis formen und die messwerte drumherum verlaufen lassen.

über cart2pol und polar wird der selbe verlauf ja genauso im polaren ks gezeichnet, wie im kartesischen.

ich hoffe ich hab es jetzt etwas besser ausgedrückt Smile
Private Nachricht senden Benutzer-Profile anzeigen
 
luep
Forum-Anfänger

Forum-Anfänger


Beiträge: 25
Anmeldedatum: 11.07.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.04.2016, 12:12     Titel:
  Antworten mit Zitat      
Les dir mal den Befehl cart2pol unter help in matlab durch.

Ich denke mal sowas sucht du?
Private Nachricht senden Benutzer-Profile anzeigen
 
cheechoo
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 18
Anmeldedatum: 17.10.15
Wohnort: Hamburg
Version: ---
     Beitrag Verfasst am: 20.04.2016, 12:20     Titel:
  Antworten mit Zitat      
luep hat Folgendes geschrieben:
Les dir mal den Befehl cart2pol unter help in matlab durch.

Ich denke mal sowas sucht du?


Code:
x1 = linspace(0,50,100);
y1 = rand(100,1);
[x2,y2] = cart2pol(x1,y1')
polar(x2,y2)


liefert den plot im anhang. leider nicht was ich suche Sad

1.png
 Beschreibung:

Download
 Dateiname:  1.png
 Dateigröße:  17.94 KB
 Heruntergeladen:  279 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 20.04.2016, 14:05     Titel:
  Antworten mit Zitat      
Hallo cheechoo,

Die Daten sind also keine Karthesischen Koordinaten, sondern der Winkel und der Radius. Es sind also bereits kartesische Koordinaten, nur dass man den Winkel noch so skalieren muss, dass er von 0 bis 360 (bzw 2*pi) geht.

Zitat:
Aber dem ist ja nicht wirklich so, sondern die Fläche gehörte radial zu einem Zylinder. Und genau das möchte ich nun wieder darstellen. im Endziel will ich keinen Mittelwert haben, keinen Radius oder sonstiges.

Für die Messwerte des Radius ist noch nicht klar, wie groß der Absolut-Wert ist, oder? Die Daten enthalten nur die Schwankungen um den Mittelwert.


Zitat:
Wenn es dafür als "Hilfskonstruktion" die Gaussgrade benötigt, die dann zum Kreis geschlossen wird und als neue runde x-Achse dient, dann ist das auch ok.

Mir bleibt es ein Rätsel, wie Du eine Gerade zu einem Kreis schließen willst. Eine Gaussgerade ist einfach eine Gerade. Und diese läuft durch den Mittelwert des gemessenen Radius', sofern die Rauhigkeit Gauss-verteilt ist.

[code]Im Endeffekt betreibe ichd somit Reverse Engineering mit den Messwerten der realen Oberfläche...[/quote]
Ich bezweifele, dass das etwas mit "Reverse Engineering" zu tun hat.

So weit ich Dich verstehe benötigste Du einfach nur:
[code]polar(x(:,1) / 8600 * 2* pi, x(:,2) + R)[/code]
Oder vielleicht anders herum. R bliebe dabei geeignet zu bestimmen, denn das ist bicght eindeutig definiert: Du kannst ja einen Kreis mit 1m oder 100m Radius in 86000 Schritten vermessen.

Ich habe den Eindruck, Du stehst auf dem Schlauch. Die Bezeichnung "x" und "y" scheinen für Verwirrung zu sorgen. Jedenfalls hören sich Deine Erklärungen nicht so an, als seien das Karthesische Koordinaten.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
luep
Forum-Anfänger

Forum-Anfänger


Beiträge: 25
Anmeldedatum: 11.07.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.04.2016, 14:05     Titel:
  Antworten mit Zitat      
Ich hoffe ich habe dich jetzt richtig verstanden.

(Ist ein beliebiger Kreis), ich hoffe der Radius des Kreises ist bekannt.


Code:


clear all;
Punkteanz= 100; %Punkteanzahl
radius=2.5;      %Radius

%Kreis in Polar-KO (Winkel und Radius)
theta=linspace(0,2*pi,Punkteanz); %100 Punkte zwischen 0 and 2pi
rho=ones(1,Punkteanz)*radius
w=rand(100,1)  % 100 Zufallszahlen
w=w*0.1     % Zufallszahlen eine Einheit kleiner
i=1;
%Kreis mit Abweichungen
for i=1:100
    k(i)=rho(i)+w(i);
    i=i+1;
end


%Konvertierung PolarKO zu KartesischKO
[X,Y] = pol2cart(theta,k);   % Kreis mit Abweichungen
[Xk,Yk] = pol2cart(theta,rho); %Perfekter Kreis
%Plot
plot(X,Y,'or','linewidth',2);
hold on;
plot(Xk,Yk,'og','linewidth',2);
legend('Kreis mit Abweichung','Perfekter Kreis');
axis square



Ich hoffe jetzt, das ist der richtige Ansatz, nun musst es noch auf den speziellen Fall abgestimmt werden.
Private Nachricht senden Benutzer-Profile anzeigen
 
cheechoo
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 18
Anmeldedatum: 17.10.15
Wohnort: Hamburg
Version: ---
     Beitrag Verfasst am: 26.04.2016, 10:12     Titel:
  Antworten mit Zitat      
Perfekt! So sieht das nun aus:

Code:
%% RUNDE RAEUMLICHE DARSTELLUNG AM ZYLINDER
radius_ws = taststrecke_roh_0 / (2*pi) ;    % = Radius des Werkstuecks
durchmesser_ws = 2*radius_ws ;              % = Kontrolle, Abgleich mit Zeichnung mgl      
 
%Kreis in Polar-KO (Winkel und Radius)
%SOLLKREIS
    ueberhoehung=100;                           % Überhöhung des Oberflächenprofils
    theta=linspace(0,2*pi,Punkteanz_roh_0);     % Erzeugung der Winkel

% z=0
    rho_0=ones(1,Punkteanz_roh_0)*radius_ws;    % Erzeugung der Radien der Messpunkte
    y_roh_0_skaliert=y_roh_0*ueberhoehung;
    %KREIS MIT ABWEICHUNGEN
    for i=1:Punkteanz_roh_0
     k0(i)=rho_0(i)+y_roh_0_skaliert(i);
     i=i+1;
    end
    [X0,Y0] = pol2cart(theta,k0);                  % Kreis mit Abweichungen 0

% z=5
    rho_5=ones(1,Punkteanz_roh_5)*radius_ws;  % Erzeugung der Radien der Messpunkte
    y_roh_5_skaliert=y_roh_5*ueberhoehung;
    %KREIS MIT ABWEICHUNGEN
    for i=1:Punkteanz_roh_5
        k5(i)=rho_0(i)+y_roh_5_skaliert(i);
        i=i+1;
    end
    [X5,Y5] = pol2cart(theta,k5);                  % Kreis mit Abweichungen 5

% z=10
    rho_10=ones(1,Punkteanz_roh_10)*radius_ws;  % Erzeugung der Radien der Messpunkte
    y_roh_10_skaliert=y_roh_10*ueberhoehung;
    %KREIS MIT ABWEICHUNGEN
    for i=1:Punkteanz_roh_10
        k10(i)=rho_0(i)+y_roh_10_skaliert(i);
        i=i+1;
    end
    [X10,Y10] = pol2cart(theta,k10);                  % Kreis mit Abweichungen 10

% z=15
    rho_15=ones(1,Punkteanz_roh_15)*radius_ws;  % Erzeugung der Radien der Messpunkte
    y_roh_15_skaliert=y_roh_15*ueberhoehung;
    %KREIS MIT ABWEICHUNGEN
    for i=1:Punkteanz_roh_15
        k15(i)=rho_0(i)+y_roh_15_skaliert(i);
        i=i+1;
    end
    [X15,Y15] = pol2cart(theta,k15);                  % Kreis mit Abweichungen 15

   
[Xk,Yk] = pol2cart(theta,rho_0);              % Perfekter Kreis

figure
subplot(2,3,1);
plot(x_roh_0, y_roh_0,x_roh_5, y_roh_5,x_roh_10, y_roh_10,x_roh_15, y_roh_15);
subplot(2,3,[2,6]);
plot(X0,Y0);
hold on;
plot(X5,Y5);
hold on;
plot(X10,Y10);
hold on;
plot(X15,Y15);
hold on;
plot(Xk,Yk);
legend(bemerkung0,bemerkung5,bemerkung10,bemerkung15,'Perfekter Kreis');
axis square


Der eine Kreis ist deswegen nicht geschlossen, da das Daten aus Testmessungen axialer Richtung sind. Die radialen bekomme ich bald, dann sollten die Kreise geschlossen sein.

Danke dir nochmal vielmals! Jetzt kann ich mich an der Filterung rumärgern Wink

3.JPG
 Beschreibung:

Download
 Dateiname:  3.JPG
 Dateigröße:  63.83 KB
 Heruntergeladen:  314 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 26.04.2016, 12:18     Titel:
  Antworten mit Zitat      
Hallo cheechoo,

Prima, dass das Problem gelöst ist!

Noch ein Tipp:
Code:
for i=1:Punkteanz_roh_0
  k0(i)=rho_0(i)+y_roh_0_skaliert(i);
  i=i+1;  % Weglassen
end

Das "i=i+1" ist vollkommen überflüssig und verwirrend in einer FOR-Schleife. Der Schleifen-Zähler wird von FOR bereits raufgezählt. Zudem lässt sich das ganze ohne Schleife übersichtlicher und schneller lösen:
[code]k0 = rho_0 + y_roh_0_skaliert;]/code]
Das nennt man "vektorisieren", also gleich mit den ganzen Vektoren rechnen als mit den einzelnen Elementen. Gerade das ist die Stärke von Matlab. Einerseits wird das deutlich schneller bearbeitet, andererseits ist es so übersichtlich und kompakt, dass man einfacher weniger Bugs machen kann.

Gruß, Jan
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.