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

Suche drigend Hilfe für ein Sortieralgorithmus

 

cerarslan
Forum-Newbie

Forum-Newbie


Beiträge: 4
Anmeldedatum: 13.12.17
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 13.12.2017, 12:21     Titel: Suche drigend Hilfe für ein Sortieralgorithmus
  Antworten mit Zitat      
Hey,

ich habe ein Problem, was ich momentan nicht lösen kann. Und ich suche jemanden, der mir eventuell mir dabei helfen könnte. Ich bzw. meine Gruppe hatten bislang nie mit Matlab Simulink etwas gemacht.
Vorweg: Ein Roboter soll ein Tischtennisball jonglieren.

Der Ball wird aus einer gegebenen Höhe fallen gelassen und soll nachdem Aufprall mit der Platte auf eine gewollte Höhe fliegen.
Die Berechnungen wurden schon mit Simulink getätigt.
In der Realität gibt es eine Kamera die alle ??? Sekunden ein Bild aufnehmen kann.
Wir bekommen z-Werte (Höhe) und die dazugehörigen Zeiten.
Anschließend wurden die vielen z-werte diskretisiert mit einem zusätzlichen Block clock, um halt alle ?? Sekunden das Signal abzugreifen.
Anschließend wurden unit delays (1/z) Blöcke verwendet und zum Schieberegister verbunden. Von dort aus geht es in die Matlab FCN. Dort werden alle komplexen Nullstellen und Werte die kleiner 0 sind rausgenommen.

Das Problem ist jetzt, dass man einen "Vektor" mit vielen Werten in einer Spalte bekommt. Jedoch ist nicht jeder Wert zu gebrauchen.
Zahlen erfolgen zum Beispiel wie folgt:
1.7494
0.9484
0.1443
0.4933
0.322 <----- der wäre jetzt zu entnehmen
0.4343.
0.4234
0.5434
0.9488 <----- dann der
...
...


Wir können auch die Werte nicht einzeln ansprechen. Ich bzw. meine Gruppe kommen dabei echt nicht weiter.


Würde mich echt auf Hilfe freuen. Gerne kann ich per Email bei wirklichem Interesse zu helfen Bilder oder Sonstiges senden.


mfg
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.434
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 13.12.2017, 19:22     Titel:
  Antworten mit Zitat      
Hallo,

nach welchen Kriterien entscheidet ihr, welche Werte zu gebrauchen oder nicht zu gebrauchen sind?

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
cerarslan
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 4
Anmeldedatum: 13.12.17
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 13.12.2017, 20:20     Titel:
  Antworten mit Zitat      
Hey,

ich hab mich wohl heute morgen etwas verdaddelt beim Schreiben und Ausdrücken meines Problems. War wohl etwas müde.
Diese Werte die ich dort genannt habe sind geschätzte Aufprallzeiten.

Ich schreibe es nochmal um;

Bis zum ersen Aufprall sollen 3 z-Werte genommen werden und aus den z-Werten soll ein Aufprallzeitpuntk geschätzt werden. Zu beachten ist, dass die z-werte nicht zu spät zu der Steuerung geliefert werden, da sie Zeit benötigt um es zu regeln. Damit meine ich, dass z-Werte die kurz oberhalb des Aufpralls nicht relevant sind, also unbrauchbar sind.
Nachdem Aufprall hat der Ball eine zu hohe Geschwindigkeit, sodass die Kamera diese Punkte nicht richtig aufnehmen kann. Somit werden ab einer bestimmten Zeit die z-Werte wieder erfasst - insgesamt sollen es dann 5 z-werte sein. Danach soll wieder ein Aufprallzeitpunkt geschätzt werden etc. Die z-werte wurden in ein Vektor überführt.

Der erste Aufprallzeitpunkt müsste nach Rechnungen bei 0.32 liegen. Und wir wollen immer einen Abstand von 0.6s zum nächsten Aufprallzeitpunkt.

Ich hoffe ich habe mich besser ausgedrückt - bin nicht der beste Erklärer ^^


mfg
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.434
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 13.12.2017, 22:15     Titel:
  Antworten mit Zitat      
Hallo,

es mag jetzt trivial klingen, aber um deine Frage beantworten zu können, muss man sie verstehen. Stell dir mal vor, du wüsstest nicht, um was es geht, und lies deine Frage. Würdest du sie verstehen?

So kann ich nur raten:
mit find kannst du den ersten Wert nahe bei 0.32 finden:
Code:
idx = find( abs(z-0.32) < toleranz , 1);


Genauso kannst du Werte bei 0.92 oder wo auch immer finden. Ob du nun diese Werte willst, nicht willst, oder irgendwelche 5 Werte dazwischen, verstehe ich beim besten Willen nicht.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
cerarslan
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 4
Anmeldedatum: 13.12.17
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 13.12.2017, 22:39     Titel:
  Antworten mit Zitat      
Hey,

ich danke dir schonmal für deine Hilfe. Sehr nett von dir.
Ich werde morgen nochmal alles ordentlich aufschreiben und werde Bilder anhängen. Vielleicht versteht man mich dann ein wenig besser :b.


mit freundlichen Grüßen
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.434
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 13.12.2017, 23:11     Titel:
  Antworten mit Zitat      
Hallo,

bitte dann auch nicht vergessen, die Vorschläge auszuprobieren und ggf. zu beschreiben, inwiefern sie nicht das gewünschte machen.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
cerarslan
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 4
Anmeldedatum: 13.12.17
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 14.12.2017, 15:08     Titel:
  Antworten mit Zitat      
Also eigentlich hatten wir uns das jetzt so gedacht.

Simulationsdauer beträgt 10 Sekunden.
Wir haben es diskretisiert, sodass wir alle 40ms ein Z-wert erhalten.
Anschließend gehen diese Z-werte mit den Zeitwerten in ein Block. Siehe angehängtes Bild. Dort werden die Zeitwerte durch fünf Unit Delays als Vektor von 5 Elementen gespeichert. Im Ausgang gehen diese Werte in die Matlab FCN. Das gleiche geschieht für die jeweiligen Z-Werte.

Zu beachten ist: Nachdem die Simulation beginnt, also wo der Ball nach unten fliegt, sollen ANFANG 3-Z Werte entnommen werden bzw. der Schieberegister muss 3 z-Werte erhalten. Aus diesen 3 Werten soll dann mit den zusätzlichen zeitwerten ein Aufprallzeitpunkt geschätzt werden.
Wenn man die ersten 3 Zeiten bzw. z-Werte bekommen hat, soll die Simulation weiter laufen, aber keine neuen Werte aufnehmen. Erst nach einer bestimmten Zeit sollen neue Werte erfasst werden für die Schätzung. Diesmal müssen 5 Werte aufgenommen werden - oben ist es parabelförmig, also muss man schon relevante Zeiten aufnehmen.

Die Schätzungen sollen in der Matlab Function entstehen.
In der Matlab FCN hatten wir folgendes:
Was dort passiert: In der MAtlab FCN:

function y = fcn(u,t)
%
% Autor, Datum
Coeff = polyfit(t,u,2);

if (Coeff(2)^2-4*Coeff(1)*Coeff(3))<=0
y=0;
else
t_auf = roots(Coeff);
y =max(real(t_auf));

end






Ich hoffe ich habe mich diesmal etwas verständlicher ausgedrückt.

Simulink1.PNG
 Beschreibung:

Download
 Dateiname:  Simulink1.PNG
 Dateigröße:  22.42 KB
 Heruntergeladen:  447 mal
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 - 2024 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.