Verfasst am: 10.04.2008, 13:22
Titel: 2D-Kurve als Rotationskörper darstellen
Hi,
ich habe folgendes Problem, ich möchte einen Kurvenverlauf den ich durch Messwerte aufgenommen habe, im 3D-Raum als drehkörper darstellen.
was ich bis jetzt hinbekommen habe, ist das ich ihn als matrix plotte, aber dadurch wird eher eckig und nicht rund,....
nur eben rund,....... da das mit A und B dann wohl nicht gehen wird, muss ich eben den mittelwert der beiden nehmen, aber soweit komm ich ja noch gar nicht. falls das mit den messwerten nicht geht reicht mir auch die gaußsche normalverteilung als funktion,...
gruß gerald
Edit by Martin: Habe für dich mal die Code-Formatierung eingebaut Darfst du aber gern auch in Zukunft selbst machen
ich hab wohl Dein Problem noch nicht verstanden. Für mich sieht Deine Graphik sehr schön rund aus (wenn man die figure vergrößert, wird es noch besser). Nur wenn man senkrecht von oben schaut, sieht man das eckige Gitternetz.
Kannst Du noch näher beschreiben, was genau runder sein soll? Möchtest Du eine geglättete Kurve? Oder soll die Figur rotationssymmetrisch sein? Ich steh etwas auf dem Schlauch.
Herzliche Grüße
Bijick
_________________
>> why
Gerald
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 10.04.2008, 18:49
Titel:
hi,
ja die grafik soll rotationssymetrisch sein. vielleicht erklär ich kurz was ich damit überhaupt gemessen hab damit man es leichter versteht.
dabei geht es um die intensitätsverteilung eines laserstrahls. ich habe mir allerdings nicht den aufwand gemacht, ihn in der kompletten matrix zu vermessen, so das ich zu jedem x-y wert ein leistungswert habe, sondern bin einfach einmal bei x=0 durch den strahl gefahren und einmal bei y=0 und hab mir jeweils die leistung notiert. so nun stimmt das was ich da rechne natürlich nicht, weil ich die beiden kurven ja in der matrix verrechne, dabei aber ja werte entstehen die so nicht da sind.
drum würde ich jetzt gern einfach den mittelwert der beiden messwertereihen bilden und diesen dann um die leistungsachse rotieren. (stimmt dann zwar auch nicht mit dem realen strahl überein müsste aber deutlich besser ausserhen als meine grafik) das mit dem mittelwert ist ja vorerst mal egal man kann ja auch erst einfach mal eine der beiden messreihen nehmen,...
Okay, jetzt habe ich's verstanden. Mit cylinder hab ich es aber bis jetzt auch nicht hinbekommen. Wenn es nur um das Aussehen geht, hier ein Beispiel mit Gauss-Kurve:
ja klar, das kann man super anpassen. Wär zwar nett, wenn es dafür einen Befehl gäbe, aber mit etwas Mathematik kriegt man es auch selbst hin. Als zu rotierende Kurve hab ich jetzt eine Hälfte der Diagonale von C genommen, aber eine Hälfte von A oder B geht natürlich auch:
Code:
figure(1) subplot(1,2,1);
% Punkte in xy-Ebene
C=B'*A;
c = diag(C)/1e6; % Diagonale
py = c(17:32)'; % Hälfte
px = (0:15);
plot(px,py); % Zu rotierende Kurve
% Rotieren um y-Achse subplot(1,2,2)
n = 15;
theta=(0:n)'*2*pi/n;
surf(cos(theta)*px,sin(theta)*px,ones(n+1,1)*py);
Verfasst am: 27.01.2009, 16:51
Titel: Matrix must be square
Hallo,
ich habe ein ähnliches Problem und habe versucht die Lösung darauf zu übertragen. Aber komischerweise hat es einmal funktioniert und dann nicht mehr.
das Beispiel ist leider nicht komplett, es fehlen noch einige Variablen für die Berechnung von py. Kannst Du die (oder typische Beispielwerte) noch angeben?
Herzliche Grüße
Bijick
_________________
>> why
Carsten
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 27.01.2009, 17:21
Titel:
Ui, dass ging aber schnell!
Also, hier noch mal das Ganze mit ein paar Bsp-Werten.
Hallo,
noch mal ich (nur diesmal angemeldet).
Das rotieren der ersten Kurve hat ja wunderbar geklappt. Das wollte ich nun auf meine anderen übertragen und da kommt die Fehlermeldung "Conversion to double from sym is not possible",obwohl ich eigentlich nur die Funktionen im Code ausgetauscht habe. Kann mir jemand erklären warum das einmal sym und einmal double ist?
Hab meinen ganzen Code mal als Datei angehängt. Ab Zeile 154!
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.