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 Wendepunkt im Hochaufgelösten Signal

 

KEH
Forum-Century

Forum-Century


Beiträge: 148
Anmeldedatum: 09.10.14
Wohnort: ---
Version: 2016b
     Beitrag Verfasst am: 02.06.2015, 12:12     Titel: Suche Wendepunkt im Hochaufgelösten Signal
  Antworten mit Zitat      
Hallo ich habe ein CMJ (Sprung aus Hocke) und möchte aus dem Kraft verlauf 3 segmente Machen dazu suche ich den schnitt Punkt.
Der verlauf ist anfangs konstant sinkt dann kurz ab und Steigt wieder stark an um am ende auf 0 Zugehen

Kann ich die Wende punkte groß zugig auslesen? Problem ist das es ein 1000 Frames pro Sec signal ist.

Vielen dank für alle Tipps

KEH
Private Nachricht senden Benutzer-Profile anzeigen


Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 02.06.2015, 12:27     Titel:
  Antworten mit Zitat      
Zitat:
dazu suche ich den schnitt Punkt
den schnittpunkt mit was?
Zitat:
Der verlauf ist anfangs konstant sinkt dann kurz ab und Steigt wieder stark an um am ende auf 0 Zugehen
ein bild wäre da irgendwie aussagekräftiger und leichter zu verstehen.
Zitat:
Kann ich die Wende punkte groß zugig auslesen?
was meinst du mit auslesen und "groß zugig"?
Zitat:
Problem ist das es ein 1000 Frames pro Sec signal ist.

worin genau besteht darin das problem?
beispieldaten und code wären hilfreich. was klappt nicht so wie du dir das vorstellst. wie weichen die ergebnisse von den erwarteten bzw gewünschten ab und so weiter. halt die stichpunkte aus dem thread meiner signatur
grüße winkow
_________________

richtig Fragen
Private Nachricht senden Benutzer-Profile anzeigen
 
KEH
Themenstarter

Forum-Century

Forum-Century


Beiträge: 148
Anmeldedatum: 09.10.14
Wohnort: ---
Version: 2016b
     Beitrag Verfasst am: 03.06.2015, 09:43     Titel:
  Antworten mit Zitat      
mhh ihr zerpflückt auch jeden beitrag ....

Nun Ja
Bild,
Zu den 4 Schwarzen linien benötige ich die Koordinaten auf der x Achse
um Mit diesen Weiter zurechnen.

Ich hab leider Kein vorschlag für den ersten Punkt da es immer ein Menschliches "zittern" gibt, daher die Angabe "Großzügig", also am besten vorher filtern? oder Kann ich es anders Lösen?

Wenn ich den ersten und den Letzten punkt habe ist der Rest ja kein Problem.

Danke schon mal

edit: Bild

untitled.jpg
 Beschreibung:
hier das bild

Download
 Dateiname:  untitled.jpg
 Dateigröße:  43.53 KB
 Heruntergeladen:  439 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 03.06.2015, 11:14     Titel:
  Antworten mit Zitat      
Zitat:
mhh ihr zerpflückt auch jeden beitrag ....

das mach ich nicht aus langer weile sondern weill mir die frage nicht genug informationen für eine sinnvolle beantwortung enthielt. ich würde mich in der tat freuen wenn ich nicht in 70% meiner beiträge auf den thread in meiner signatur verweisen müsste Smile
zu deinem problem:
meine erste idee wäre es auch zu filtern. wenn du ein rauschen drin hast kannst du das ja rausfiltern. vieleicht reicht auch ein moving average... wobei das ja auch ein filter ist Smile danach würde ich mir dann mal die 2. ableitung angucken. also diff 2 mal anfwenden und gucken ob ich da einen sinnvollen grenzwert festlegen kann um die gesuchten punkte zu bestimmen.
wenn du beispieldaten zur verfügung stellst könnte man damit rumprobieren.
grüße
_________________

richtig Fragen
Private Nachricht senden Benutzer-Profile anzeigen
 
KEH
Themenstarter

Forum-Century

Forum-Century


Beiträge: 148
Anmeldedatum: 09.10.14
Wohnort: ---
Version: 2016b
     Beitrag Verfasst am: 03.06.2015, 12:48     Titel:
  Antworten mit Zitat      
Ja, ne Ableitung ... das ist gut

test Daten:
Es sind reihne Rohdaten
Der Aufbau ist
Fx Fy Fz Mx My Mz
um die Fz Komponente geht es hier, also 3 Spalte

testCMJ.txt
 Beschreibung:

Download
 Dateiname:  testCMJ.txt
 Dateigröße:  1.75 MB
 Heruntergeladen:  405 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
KEH
Themenstarter

Forum-Century

Forum-Century


Beiträge: 148
Anmeldedatum: 09.10.14
Wohnort: ---
Version: 2016b
     Beitrag Verfasst am: 03.06.2015, 13:07     Titel:
  Antworten mit Zitat      
oder kann ich eine Abfrage gestalten mit den bedingungen

Fz - 5% für die nächsten 100 werte
also

Code:
GRF = mean Fz/1:100) % Körpergewicht

If Fz < (GRF - GRF*0.05) &[b][u] Fz(i) < Fz(i+1 : i+100) [/u][/b]

dann startpunkt koordinate von FZ(i)

end
 


Wie schreib ich denn kurz das die folgenden die erste bedngung ebenfalss erfüllen sollen ?

Gruß KEH
Private Nachricht senden Benutzer-Profile anzeigen
 
KEH
Themenstarter

Forum-Century

Forum-Century


Beiträge: 148
Anmeldedatum: 09.10.14
Wohnort: ---
Version: 2016b
     Beitrag Verfasst am: 03.06.2015, 13:33     Titel:
  Antworten mit Zitat      
Filtern und Diff gab nix

bild
nicht weiter bearbeitet da es so keine aussage gibt.
auser ich seh was nicht ?

untitled1.jpg
 Beschreibung:

Download
 Dateiname:  untitled1.jpg
 Dateigröße:  19.37 KB
 Heruntergeladen:  432 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: 03.06.2015, 14:14     Titel:
  Antworten mit Zitat      
Hallo KEH

Ich kann Dir inhaltlich nicht folgen.

Zitat:
oder kann ich eine Abfrage gestalten mit den bedingungen
Fz - 5% für die nächsten 100 werte

Das verstehe ich nicht.

Zitat:
Code:
GRF = mean Fz/1:100) % Körpergewicht
If Fz < (GRF - GRF*0.05) &[b][u] Fz(i) < Fz(i+1 : i+100) [/u][/b]
dann startpunkt koordinate von FZ(i)
end

Das ist kein valider Matlab Code. Ich kann nicht erraten, was "mean Fz/1:100)" genau bedeuten soll.
Bitte füge keine Formatierungs-Zeichen innerhalb der Code-Umgebung ein, denn die Code-Umgebung ist explizit nur für Code gedacht.

Bitte denke daran, dass Sätze wie "dann startpunkt koordinate von FZ(i)" für Dich klar sind, die Leser aber einiges an Rate-Kraft dafür benötigen.

Zitat:
Filtern und Diff gab nix
bild
nicht weiter bearbeitet da es so keine aussage gibt.

Hierzu kann ich auch nichte antworten, weil ich nicht weiß, was "gab nix" bedeutet.

Zitat:
Ich hab leider Kein vorschlag für den ersten Punkt da es immer ein Menschliches "zittern" gibt, daher die Angabe "Großzügig"

Wenn Du die Daten wissenschaftlich auswerten möchtest, musst Du zunächst eine Analyse des Rauschens, also des "menschlichen Zitterns" durchführen, um geeignete Filter-Parameter zu finden. Einfach nur mal eben "großzügig" zu filtern, kann Dir auf das gesamte Signal vernichten.
Und das Forum geeignete Filter-Parameter raten zu lassen ist keine wissenschaftlich stichhaltige Methode.

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

Forum-Century

Forum-Century


Beiträge: 148
Anmeldedatum: 09.10.14
Wohnort: ---
Version: 2016b
     Beitrag Verfasst am: 04.06.2015, 07:53     Titel:
  Antworten mit Zitat      
=D Sehr schön

Also deine aussage ist eine Frequenzanalyse zumachen, Das ist doch mal eine Antwort

Ich möchte eine abfrage gestalten die mir den Punkt A ausgibt der über die folgenden 100 Werte definiert wird. Und zwar suche ich somit aus meinem Grafen F(x), F(A) wenn F(A+1) bis F(A+100) einen wert haben der 95% meines Refferenzwertes (GRF) unterschreitet
Private Nachricht senden Benutzer-Profile anzeigen
 
KEH
Themenstarter

Forum-Century

Forum-Century


Beiträge: 148
Anmeldedatum: 09.10.14
Wohnort: ---
Version: 2016b
     Beitrag Verfasst am: 04.06.2015, 09:07     Titel:
  Antworten mit Zitat      
Zur Frequenzanalyse:
Code:
%% Butterworthfilter Level 2 12Hz cut-off frequenz, 1000Hz Sampling frequenz
    [a,b] = butter(2,24/1000);
    %freqz(b,a) %Darstellung
   Neu= filter(a,b,FZ0i);
   


das Läuft jetzt hab ich ein glattes signal =)

jetzt fehlt nur noch der Start punkt ( wie oben beschrieben )
Private Nachricht senden Benutzer-Profile anzeigen
 
KEH
Themenstarter

Forum-Century

Forum-Century


Beiträge: 148
Anmeldedatum: 09.10.14
Wohnort: ---
Version: 2016b
     Beitrag Verfasst am: 04.06.2015, 15:01     Titel:
  Antworten mit Zitat      
Hier Mein ansatz
Code:
for Versuche = 1:length(A_cut)
           FZ0i = Matrix_Roh{iFile}{1,Versuche}(:,3)-Fm{Versuche};
       
    %% Butterworthfilter Level 2 12Hz cut-off frequenz, 1000Hz Sampling frequenz
        [a,b] = butter(2,24/1000);
        %freqz(b,a) %Darstellung
        FZ0{iFile}{Versuche}= filter(a,b,FZ0i);
       
        for i = 200:1900 % Suche im Bereich
        K=FZ0{iFile}{Versuche}(i:i+99);
            Abfrag=K<-0.01*Fm{Versuche}; % Suche 100 werte die Nacheinander kleiner alss - 1% KG sind
            if sum(Abfrag) == 100 % ist die abfrage 100 mal 1
                fi(i) = find(FZ0{iFile}{Versuche}==FZ0{iFile}{Versuche}(i));
            end
        end
   
        f=fi(fi~=0);
        Start{iFile}(Versuche)=f(1);
    end


Beim Ersten mal Klappts danach kommt nix Plausiebles mehr. Versteht einer den Code? und kann mir was zu meinen Fehlern sagen btw bessere Ansätze?
Private Nachricht senden Benutzer-Profile anzeigen
 
KEH
Themenstarter

Forum-Century

Forum-Century


Beiträge: 148
Anmeldedatum: 09.10.14
Wohnort: ---
Version: 2016b
     Beitrag Verfasst am: 05.06.2015, 14:04     Titel:
  Antworten mit Zitat      
Ich glaube es liegt an meier abfrage
Kann mir einer die Zeilen formolieren:
A ist ein Vektor 1: 4000
B ist eine Zahl

Wenn A(1:100) < B ; A(2:101) < B ;... A(3900:4000) < B ( Soll heißen jeder der 100 werte soll kleiner als B sein)
dann gib mir den x und y Wert von A wieder bei dem die Abfrage das erste mal zutrifft.

Vielen Dank für eure Unterstützung
KEH
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: 06.06.2015, 15:55     Titel:
  Antworten mit Zitat      
Hallo KEH,

Wie wäre es damit:
Code:
Index = find(A >= B, 1, 'first');
x = Index  - 101;
if x > 0
  y = A(x);
end


Solche Code-Zeilen sind der reine Horror:
Code:
fi(i) = find(FZ0{iFile}{Versuche}==FZ0{iFile}{Versuche}(i));

Einerseits ist das kaum noch lesbar. Andererseits verschlingt es ohne Nutzen viel Rechenzeit wegen des indirekten indirekten Zugriffs auf die eigentlichen Werte.
Die fehlende Pre-allocation für f ist sehr schlecht für die Performance.
Die Parameter für den Butterworth-Filter in jeder Iteration neu zu berechnen vergeudet ebenfalls viel Zeit.

Es wäre sinnvoll hier eine Unterfunktion zu schreiben, die jeweile nur eine Matrix mit den benötigten Werten erhält. Für Berechnungen ist es ja unerheblich, aus welchem "File" die Daten stammen.

Ich finde den Code so unübersichtlich, dass ich nicht auf Anhieb heraucbekomme, was er leisten soll. Mit der Erklärung als Text hat er auf jeden Fall aber nichts zu tun.

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

Forum-Century

Forum-Century


Beiträge: 148
Anmeldedatum: 09.10.14
Wohnort: ---
Version: 2016b
     Beitrag Verfasst am: 10.06.2015, 12:26     Titel:
  Antworten mit Zitat      
Hey Jan

Ja ich weiß das es alles noch nicht so toll ist aber ich lern halt noch

zu deiner Idee
A ist bei mir nun 100 werte lang und wird aus einem 4000 langem vektor geschnitten
B ist der Schwellwert

Jetzt vertehe ich den rest nicht
"wenn alle werte von A unter den wert B sinken " ist in deinem Code gar nicht gefragt oder?
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.