|
|
rotierender Kreis, horizontaler Durchmesser, live-Auswertung |
|
karle |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 09.04.2013, 12:37
Titel: rotierender Kreis, horizontaler Durchmesser, live-Auswertung
|
 |
Hallo,
ich habe es schon geschafft, einen Kreis um die vertikale Achse rotieren zu lassen! yay!
Nun möchte ich gerne in JEDEM frame den horizontalen Durchmesser bestimmen.
Bisher habe ich nicht wirklich eine Ahnung, wie ich das anstellen sollte. Ich kann auf folgende Ideen: Kantendetektion, Punkte definieren und deren Abstand berechnen.
Kann mir jemand einen Lösungsansatz oder gar eine Lösung zu meinem Problem nennen?
Das Endprodukt soll ein Film werden, der den rotierenden Kreis und daneben eine Grafik, die entsprechend des Rotationswinkels, den horizontalen Durchmesser plottet, zeigt.
Vielen Dank für eure Hilfe!
|
|
|
|
|
karle |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 09.04.2013, 13:26
Titel:
|
 |
ich hatte noch eine weitere idee?
es dürfte doch genügen, die schnittpunkte mit der x-achse zu finden.
dann kann ich den abstand dieser beider punkte bestimmen und habe meinen horizontalen durchmesser!
aber wie mache ich das?
vielen Dank!
|
|
|
Winkow |

Moderator
|
 |
Beiträge: 3.842
|
 |
|
 |
Anmeldedatum: 04.11.11
|
 |
|
 |
Wohnort: Dresden
|
 |
|
 |
Version: R2014a 2015a
|
 |
|
|
 |
|
Verfasst am: 09.04.2013, 15:52
Titel:
|
 |
ist der durchmesser nicht einfach
?
wenn (i+5) dein drehwinkel ist. kleine anmerkung: i ist die imaginäre einheit und sollte nicht als laufvariable verwendet werden. das +5 kommt daher weil du i erst nach dem drehen erhöhst
|
|
|
Jan S |

Moderator
|
 |
Beiträge: 11.057
|
 |
|
 |
Anmeldedatum: 08.07.10
|
 |
|
 |
Wohnort: Heidelberg
|
 |
|
 |
Version: 2009a, 2016b
|
 |
|
|
 |
|
Verfasst am: 09.04.2013, 17:05
Titel: Re: rotierender Kreis, horizontaler Durchmesser, live-Auswer
|
 |
Hallo karle,
Ein Bemerkung: Immer wieder stößt man im Forum auf Code, der den brutalen Clear-Header "clear all, clc, clf" enthält. Es mag Geschmackssache sein, ob es nützlich ist das Command-Window und die offenen Figures zu löschen. Aber "clear all" hat häßliche Seiteneffekte:
1. Es werden alle geladenen Funktionen aus dem Speicher gelöscht. Das Nachladen von der Platte ist prinzipbedingt langsam und das Parsen zeitaufwändig.
2. Alle Breakpoints werden gelöscht. Das behindert das Debuggen ungemein, was grundsätzlich beim Programmieren eine sehr schlechte Idee ist.
Trotz der Nachteile ist das "clear all" leider inflationär verbreitet. Aber nur weil es viele benutzen, muss es noch nicht hilfreich sein.
Gruß, Jan
|
|
|
karle |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 10.04.2013, 10:23
Titel:
|
 |
Winkow hat Folgendes geschrieben: |
ist der durchmesser nicht einfach
?
wenn (i+5) dein drehwinkel ist. kleine anmerkung: i ist die imaginäre einheit und sollte nicht als laufvariable verwendet werden. das +5 kommt daher weil du i erst nach dem drehen erhöhst |
hallo,
ja, so in etwa habe ich mir den durchmesser auch gedacht.
allerdings sollte ich dies am besten beweisen!
deshalb möchte ich ja am ende ein video haben, das den sich drehenden kreis und die simultane durchmesser-messung zeigt.
wie kann ich also den durchmesser bei meinem kreis MESSEN?
|
|
|
karle |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 10.04.2013, 10:28
Titel: Re: rotierender Kreis, horizontaler Durchmesser, live-Auswer
|
 |
|
 |
|
Jan S hat Folgendes geschrieben: |
Hallo karle,
Ein Bemerkung: Immer wieder stößt man im Forum auf Code, der den brutalen Clear-Header "clear all, clc, clf" enthält. Es mag Geschmackssache sein, ob es nützlich ist das Command-Window und die offenen Figures zu löschen. Aber "clear all" hat häßliche Seiteneffekte:
1. Es werden alle geladenen Funktionen aus dem Speicher gelöscht. Das Nachladen von der Platte ist prinzipbedingt langsam und das Parsen zeitaufwändig.
2. Alle Breakpoints werden gelöscht. Das behindert das Debuggen ungemein, was grundsätzlich beim Programmieren eine sehr schlechte Idee ist.
Trotz der Nachteile ist das "clear all" leider inflationär verbreitet. Aber nur weil es viele benutzen, muss es noch nicht hilfreich sein.
Gruß, Jan |
Hallo,
off-topic:
vielen Dank für diese Anregung. War mir in diesem ausmaß nicht bewusst.
allerdings hat es für mich auch einen ganz praktischen grund: ich hatte schon öfter den fall, dass berechnungen in meinem code nicht richtig ausgeführt wurde. sobald ich aber "clear all" am anfang stehen hatte, und somit alle variablen gelöscht wurden, lief es wieder problemlos durch.
ich kann jetzt leider kein explizites beispiel mehr nennen, allerdings bin ich mir sicher, dass es so war.
genauso verhält es sich mit "clf". wenn vor dem erstellen nicht das figure-window komplett "gelöscht" wird, ist die aktuelle anzeige oft total daneben.
gibt es denn einen befehl, alle variablen zu löschen? somit könnte das "clear all" umgangen werden. alle variablen einzeln zu löschen ist allerdings keine option...
|
|
|
Jan S |

Moderator
|
 |
Beiträge: 11.057
|
 |
|
 |
Anmeldedatum: 08.07.10
|
 |
|
 |
Wohnort: Heidelberg
|
 |
|
 |
Version: 2009a, 2016b
|
 |
|
|
 |
|
Verfasst am: 10.04.2013, 14:41
Titel: Re: rotierender Kreis, horizontaler Durchmesser, live-Auswer
|
 |
|
 |
|
Hallo karle,
Um die Variablen zu löschen, reicht auch ein:
oder sogar ein einfaches
Das wäre deutlich effizienter und hätte keine schädlichen Nebenwirkungen.
Die Probleme mit bestehenden Variablen und Figures sind wirklich nicht unüblich. Dies lässt sich mit folgenden Methoden erfolgreich behandeln:
1. Code grundsätzlich in Funktionen schreiben, niemals als Script. Dann werden nur die Inputs von aussen übernommen und man bekommt keinerlei Schwierigkeiten, wenn man 50 verschiedene Teile nacheinander ausführen möchte. Wenn die Teil-Schritte aber als Script geschrieben wurden und diese dann noch per "clear all" bestehende Informationen vernichten, wird die Arbeit mit Matlab heftig eingeschränkt.
Es ist kein Zufall, dass alle Toolbox-Funktionen von Matlab als Funktionen und nicht als Scripte verfasst sind.
2. Figures nie mit einem IntegerHandle erstellen, z.B. "figure(1)", da man dann eventuell in eine bestehende Figure hineinschreibt. Die Integer-Handles werden seit Matlab > 3.0 (so weit ich mich erinnere) noch für die Rückwärtskompatibilität unterstützt, also seit 1990. Besser:
Ich habe im ein unsichtbares Fenster im Hintergrund laufen, um zu protokollieren, wieviel Zeit ich wann in welchem Projekt arbeite. Dies dokumentiert auch Änderungen im code, damit ich später weiß, wann ich wlchen Fehler eingefügt habe. Wenn ich Code aus dem FileExchange oder aus dem Forum laufen lassen, löschen mir die CLF's und CLEAR ALL's die persistent Variablen und die Figures. Zwar habe ich inzwischen das Löschen der Figure und der Daten verhindert (hidden handles, spezielle DeleteFcn, mlock), aber ich verbreite die Ratschläge gegen diese Befehle gerade im Forum trotzdem. Sie behindern nämlich den Schritt von kleinen Scripten zu größeren effizienten Programmen, in denen verschiedene Teilschritte nacheinander ausgeführt werden. Und wenn ich daran denke, wie viele Probleme die User in diesem Forum alleine lösen könnten, wenn sie den Debugger benutzen würden, gruselt es mich.
Ich gebe zu, dass der brutale Clearing Header tatsächlich einige Probleme löst. Und das Autofahren ist viel entspannter, wenn man die Windschutzscheibe schwarz lackiert.
Gruß, Jan
|
|
|
karle |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 10.04.2013, 14:48
Titel:
|
 |
danke für diese erklärungen!
aber hast du auch einen vorschlag meines problems betreffend?
ich würd mich tierisch freuen.
warte hier quasi mit dauer-F5 auf eine Antwort
|
|
|
Winkow |

Moderator
|
 |
Beiträge: 3.842
|
 |
|
 |
Anmeldedatum: 04.11.11
|
 |
|
 |
Wohnort: Dresden
|
 |
|
 |
Version: R2014a 2015a
|
 |
|
|
 |
|
Verfasst am: 10.04.2013, 17:34
Titel:
|
 |
ich versteh erlich gesagt nicht genau was es da zu beweisen gibt ^^ du sagst ihm was er malen soll und willst dann messen was er gemalt hat. das ist doch irgendwie doppelt gemoppelt.
der durchmesser in der projektion des rotierten körpers ergiebt sich wie oben aus der trigonometrischen gleichung.
|
|
|
karle |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 11.04.2013, 09:37
Titel:
|
 |
Hallo,
ja, das ist richtig! ich will genau das messen, das ich zuvor geplottet habe.
allerdings ist das doch nicht unüblich in der wissenschaft!
ich benötige einen BEWEIS, dass sich dies so verhält.
die reine annahme reicht nicht aus.
nochmal:
am ende hätte ich gern ein video, das auf der linken seite den sich rotierenden kreis zeigt und auf der rechten seite entsprechend dem drehwinkel den druchmesser plottet!
natürlich kann ich das auch "bescheissen" und den durchmesser einfach der funktion entsprechend plotten. allerdings ist das kein wissenschaftliches arbeiten!
|
|
|
Winkow |

Moderator
|
 |
Beiträge: 3.842
|
 |
|
 |
Anmeldedatum: 04.11.11
|
 |
|
 |
Wohnort: Dresden
|
 |
|
 |
Version: R2014a 2015a
|
 |
|
|
 |
|
Verfasst am: 11.04.2013, 13:10
Titel:
|
 |
wie gesagt. ich raff den sinn nicht eine 3 cm linie mit dem programm zu malen und dann das selbe programm messen zu lassen wie lagn die linie ist.
sind dein x koordinaten deines kreises bei t = 0 also auf der x achse hat er die länge cos(phi) der durchmesser ist also 2 mal so groß. aber naja vieleicht fällt jemand anderem ja ein umständlicher weg ein.
|
|
|
Jan S |

Moderator
|
 |
Beiträge: 11.057
|
 |
|
 |
Anmeldedatum: 08.07.10
|
 |
|
 |
Wohnort: Heidelberg
|
 |
|
 |
Version: 2009a, 2016b
|
 |
|
|
 |
|
Verfasst am: 11.04.2013, 17:59
Titel:
|
 |
Hallo karle,
Mir wird noch nicht klar, was Du genau mit welchen Methoden zeigen möchtest. Du erstellst einen Kreis als 3D-Plot. Der rotiert dann. Ok.
Möchtest Du nun Screenshots davon anfertigen und den Abstand der Pixel messen? Das würde eine recht komplizierte automatische Objekt-Erkennung benötigen. Bist Du in Digitaler Bildverabeitung sehr erfahren? Wenn nicht, sind die Ergebnisse Deiner "Messung" sehr fraglich. Zudem ist die Pixel-Auflösung auf dem Bildschirm ziemlich grob und zudem noch in 2D, so dass Du die Tiefen-Information sowieso verlierst. Zudem ist die Perspektivische Verzerrung alles andere als trivial. Die "Mess"-Ergebnisse werden also ziemlich verrauscht sein und können den benötigten Aufwand kaum rechtfertigen.
Was ist also das wissenschaftliche Ziel, dass Du mit dem Programm erreichen möchtest?
Gruß, Jan
|
|
|
|
|
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
|
|
Impressum
| Nutzungsbedingungen
| Datenschutz
| FAQ
| 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.
|
|