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

Messwerte (zeitdiskret und wertkontinuierlich) ableiten

 

Tooth
Forum-Newbie

Forum-Newbie


Beiträge: 6
Anmeldedatum: 23.08.18
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 23.08.2018, 10:32     Titel: Messwerte (zeitdiskret und wertkontinuierlich) ableiten
  Antworten mit Zitat      
Hallo Leute,
ich habe eine Messung durchgeführt bei welcher ein Kolben aus einem Zylinder fährt.Ich will jetzt die Geschwindigkeit und Beschleunigung des Versuches plotten.

Nun habe ich als Ergebniss zwei Arrays mit ca 1500 Werten, das eine beinhaltet eine Spannung welche proportional zum Weg ist, das zweite die Zeit. (Abtastrate waren 100Hz).
Wenn ich den Weg in abhängigkeit der Zeit plotten will geh es relativ einfach mit.
plot(Data1_time,Data1_voltage);
Bei der Geschwindigkeit komme ich jedoch nicht weiter.

Ich habe online schon ein paar Ansätze versucht, bislang hat es aber noch nicht geklappt.

Kann mir jemand sagen wie ich diese Messdaten ableiten kann, damit ich Geschwindigkeit und Beschleunigung erhalte?

Mit freundlichen Grüßen
Tooth
Private Nachricht senden Benutzer-Profile anzeigen


J0nas
Forum-Century

Forum-Century


Beiträge: 208
Anmeldedatum: 10.09.15
Wohnort: ---
Version: ab 2016a
     Beitrag Verfasst am: 23.08.2018, 10:49     Titel:
  Antworten mit Zitat      
Hi Tooth,

du könntest mit Hilfe von diff die Differenz zwischen zwei Zeitwerten berechnen und mit dieser Differenz und der Abtastrate dann die gemittelte Geschwindigkeit zwischen zwei Zeitpunkten berechnen.
Gleiches dann mit Geschwindigkeit und Abtastrate für die Beschleunigung.

Grüße
Jonas
_________________

1.) Ask Google & Matlab Documentation
2.) Ask gomatlab.de & Technical Support of MathWorks
3.) Go mad, your problem is unsolvable
Private Nachricht senden Benutzer-Profile anzeigen
 
Tooth
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 6
Anmeldedatum: 23.08.18
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 23.08.2018, 14:14     Titel:
  Antworten mit Zitat      
Danke, das Ableiten hat damit funktioniert.

Nun habe ich jedoch das Problem, das mein Messsignal verrauscht ist und ich beim Ableiten sehr große Amplituden bekomme.
Ich habe das Signal schon gefiltert mit:

iN = 20;
vgg = filter(ones(1,iN)/iN, 1, Y);

Das geht bei der ersten Ableitung noch, wie man sieht ist die zweite Ableitung aber schon unbrauchbar, wie man am Angehängtem Bild sieht.

Was kann ich machen, damit ich einen schöneren Verlauf bekomme?

001-Plotxva.png
 Beschreibung:

Download
 Dateiname:  001-Plotxva.png
 Dateigröße:  79.97 KB
 Heruntergeladen:  329 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.448
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 23.08.2018, 14:32     Titel:
  Antworten mit Zitat      
Hallo,

versuch mal, die Geschwindigkeiten auch nochmal zu filtern.
Alternativ beim Weg nicht nur einen gleitenden Mittelwert, sondern einen Filter zum gezielten Unterdrücken hoher Frequenzen.

Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
Tooth
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 6
Anmeldedatum: 23.08.18
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 29.08.2018, 20:27     Titel:
  Antworten mit Zitat      
Ich habe zuerst das Signal abgeleitet und dann gefiltert, das war mein Fehler.
Erster Filtern und dann Ableiten hat ein besseres Ergebnis geliefert
Private Nachricht senden Benutzer-Profile anzeigen
 
Tooth
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 6
Anmeldedatum: 23.08.18
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 29.08.2018, 20:38     Titel:
  Antworten mit Zitat      
Ich hätte noch eine Frage. Wie man an meinem Beispiel-Foto von oben sieht, passier bis Sekunde 3 gar nichts und später ab Sekunde 7 auch nicht mehr viel.
Also plotte ich mit xlim([3 7]).
Jetzt wollte ich mir das Minium und Maximum ausgeben lassen.
Das geht mit dem Code von dieser Seite aber nur bedingt:
https://de.mathworks.com/examples/m.....ximum-points-and-add-text

Der Code:
Code:
x = linspace(-3,3);
y = (x/5-x.^3).*exp(-2*x.^2); %Beliebige Beispielgleichung
plot(x,y)

indexmin = find(min(y) == y);
xmin = x(indexmin);
ymin = y(indexmin);
indexmax = find(max(y) == y);
xmax = x(indexmax);
ymax = y(indexmax);

strmin = ['Minimum = ',num2str(ymin)];
text(xmin,ymin,strmin,'HorizontalAlignment','left');
strmax = ['Maximum = ',num2str(ymax)];
text(xmax,ymax,strmax,'HorizontalAlignment','right');


Dieser Befehl liefert aber das Minimum/Maximum vom gesamtem Datensatz. Da ich am anfang und Ende des Datensatzes starke Messfehler habe, gibt er mir nur diese aus und nich zwischen Sekunde 3 und 7.

Wie kann ich das ändern?
Mit freundlichen Grüßen
Tooth
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.448
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 29.08.2018, 20:46     Titel:
  Antworten mit Zitat      
Hallo,

du kannst aus den Daten einen Teil herausholen, z.B.

Code:
yselect = y( x >= 3 & x <= 7 )
xselect = x( x >= 3 & x <= 7 )

und die Analyse dann mit den Daten durchführen.

Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
Tooth
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 6
Anmeldedatum: 23.08.18
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 29.08.2018, 20:58     Titel:
  Antworten mit Zitat      
Vielen Dank für die schnelle Antwort.
wenn ich z.B.
Code:
xselect = x( x >= 3 & x <= 7 )

verwende bekomme ich x werte zwischen 3 und 7. WIe bekomme ich die dazugehörigen y werte?
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


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

Zitat:
WIe bekomme ich die dazugehörigen y werte?

Die andere Codezeile, die ich dir vorgeschlagen habe.

Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
Tooth
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 6
Anmeldedatum: 23.08.18
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 30.08.2018, 09:35     Titel:
  Antworten mit Zitat      
Danke, hab es zuerst falsch verstanden.

So funktioniert es gut.
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.