|
|
Sinus in diskrete Punkte legen |
|
Martin87 |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 22.06.2012, 18:15
Titel: Sinus in diskrete Punkte legen
|
 |
|
 |
|
Hallo und guten Abend zusammen,
ich vesuche seit ein paar Stunden einen Sinus in ein paar Messpunkte zu legen, einfach um mal zu gucken, welche Schwingung aus einer Unterabtastung nach Shannon aus diesen Daten interpretiert werden könnte.
Dazu habe ich ein Simulinkmodell eines Einmassenschwingers aufgebaut und lade damit Messdaten zu diskreten Zeitpunkten in meinen Workspace. Als nächstes will ich eine harmonische Schwingung errechnen die durch alle diese Messdaten verläuft. Mein bisheriger Ansatz ist der, mit fsolve zu arbeiten. Allerdings scheint dieses Tool bei einem "überbestimmten" NLGS seine Grenzen zu kennen. Ich möchte nämlich mit fsolve 3 Parameter einer Sinusfunktion errechnen ( verschiebung in x-Richtung, Dehnung in x-Richtung und Dehnung in y-Richtung). Lasse ich die Rechnung mit nur 3 Messpunkten laufen, legt Matlab mir schön durch alle 3 Punkte den Sinus, so wie ich es mir vorstelle.
Möchte ich nun aber mehr als 3 Messpunkte mit einbeziehen, da der errechnete Sin durch 3 Messpunkten nicht alle Messpunkte durchläuft, streikt Matlab und gibt etwas ganz konfuses aus.
Im Anhang habe ich mal ein Bild dazu hochgeladen.
Die blaue Kurve entspricht quasi dem kontinuirlichen Signal der aus dem System raus kommt.
Die roten Punkte sind die diskret abgetasteten Werte.
Und die grüne Kurve, ist die die ich bisher in die Punkte legen konnte.
Auf dem Bild sieht man das die ersten 3 Punkte gut getroffen werden aber alle weiteren nicht mehr. Dazu habe ich zu Erstellung dieses Plots auch nur 3 Messwerte ausgewertet. Bei 4 oder mehr Messwerten kommt aber auch nichts Befriedigenderes bei raus. Ganz im Gegenteil. Nutze ich alle Messwerte (rote Punkte) liegt der grüne Sinus je nach Startwert in keinem der roten Punkte.
Hier mal mein code:
clc
clear
Simulationszeit=30;
m=20;
c=10;
d=10;
sim('Probe')
x=[0,0,0];
signals=giveMW();
x0=[1;1;1];
options=optimset('Display','iter'); % Option to display output
[t,fval] = fsolve(@myfun,x0,options) ;
x=length(conti.signals.values);
x=linspace(0,Simulationszeit,x);
y=conti.signals.values;
plot(x,y);
hold;
xx=length(diskret.signals.values);
xx=linspace(0,Simulationszeit,xx);
yy=diskret.signals.values;
plot(xx,yy,'* r');
plot(x,t(1)*sin(x*t(2)-t(3)),'g')
function F=myfun(x)
global signals
F=[ 0 - x(1)*sin(0*x(2)-x(3))
signals(1) - x(1)*sin(3*x(2)-x(3)) ;
signals(2) - x(1)*sin(6*x(2)-x(3))] ;
%signals(3) - x(1)*sin(9*x(2)-x(3))];
%signals(4) - x(1)*sin(12*x(2)-x(3));
%signals(5) - x(1)*sin(15*x(2)-x(3));
%signals(6) - x(1)*sin(18*x(2)-x(3));
%signals(7) - x(1)*sin(21*x(2)-x(3));
%signals( - x(1)*sin(24*x(2)-x(3));
%signals(9) - x(1)*sin(27*x(2)-x(3));
%signals(10) - x(1)*sin(30*x(2)-x(3))];
function signals=giveMW()
sim('Probe');
global signals;
signals(1)=diskret.signals.values(2);
signals(2)=diskret.signals.values(3);
signals(3)=diskret.signals.values(4);
signals(4)=diskret.signals.values(5);
signals(5)=diskret.signals.values(6);
signals(6)=diskret.signals.values(7);
signals(7)=diskret.signals.values( ;
signals( =diskret.signals.values(9);
signals(9)=diskret.signals.values(10);
signals(10)=diskret.signals.values(11);
Vielen Dank an die jenigen die sich diesem Problem mal stellen mögen
Beschreibung: |
|
 Download |
Dateiname: |
Messung.jpg |
Dateigröße: |
106 KB |
Heruntergeladen: |
735 mal |
Beschreibung: |
|
 Download |
Dateiname: |
Messung.jpg |
Dateigröße: |
106 KB |
Heruntergeladen: |
715 mal |
|
|
|
|
|
Martin87 |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 22.06.2012, 18:17
Titel:
|
 |
LOL die Smilies im Code waren nicht geplant... ich hoffe man kann das auch so lesen^^
|
|
|
Winkow |

Moderator
|
 |
Beiträge: 3.842
|
 |
|
 |
Anmeldedatum: 04.11.11
|
 |
|
 |
Wohnort: Dresden
|
 |
|
 |
Version: R2014a 2015a
|
 |
|
|
 |
|
Verfasst am: 23.06.2012, 10:34
Titel:
|
 |
Martin87 hat Folgendes geschrieben: |
LOL die Smilies im Code waren nicht geplant... ich hoffe man kann das auch so lesen^^ |
dafür giebt es ja extra die code umgebung. die sollte man auch nutzen
|
|
|
djapp |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 27.11.2012, 16:45
Titel:
|
 |
Wie sieht den deine Datei Probe aus?
|
|
|
|
|
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.
|
|