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

Sinusfunktion integrieren und plotten

 

at0m_t0mato
Forum-Anfänger

Forum-Anfänger


Beiträge: 20
Anmeldedatum: 04.04.17
Wohnort: ---
Version: R2018b
     Beitrag Verfasst am: 05.04.2017, 11:29     Titel: Sinusfunktion integrieren und plotten
  Antworten mit Zitat      
Hey Community,

ich wusste nicht so recht in welchen Thread ich das schreiben soll, also hoffe ich, ihr verzeiht mir, dass ich hier nun einfach mal ein neues Thema begonnen habe.
Mein Frage ist recht simpel. Da ich aber ein absoluter Matlab-Neuling bin, hoffe ich, dass ihr mir trotzdem helfen könnt.

Meine Funktion

Code:

y = A*sin(2*pi*f*t+d)
 


soll nach t unbestimmt integriert werden, so dass

Code:

y_int = -(A*cos(2*pi*f*t+d))/2*pi*f
 


herauskommt.
Beide Funktionen sollen geplottet werden:

Code:

%mit
A=4.3E-4; %Amplitude
f=20; %Frequenz
t=[0:0.0004:0.5]; %über die Zeit
d=0; %Das d steht nur mit drin, weil meine Funktion am Anfang durch einen Verzug der Messwertaufnahme eine Phasenverschiebung zur Folge hatte. d kann jetzt aber mit 0 angenommen werden, damit die Sin-Finktion auch im Ursprung beginnt.

figure (1)
subplot(2,1,1)
plot(t,y,'r')
title('Phasenverschobene Sinusfunktion')
xlabel('t [s]')
ylabel('v1 [ms^-1]')
legend('Sinusfunktion')
axis([0 0.5 -5*10^-4 5*10^-4])
subplot(2,1,2)
plot(t,y_int,'r-')
title('Integrierte Funktion')
xlabel('t [s]')
ylabel('s [m]')
legend('Weg')
 


Man sieht schon, dass einfach nur eine Geschwindigkeit über die Zeit zu einem Weg über die Zeit integriert und geplottet werden soll.
Wenn ich das so plotte, ist der Graph auch ein Sinus- bzw. MinusCosinus, aber die Werte beim MinusCosinus stimmen nicht(siehe Bild: meine Matlab-Funktion). Dort müsste ich laut dem Integralrechner http://www.integralrechner.de/ eine Amplitude im Mikrometer-Bereich erhalten (E-6 m). (siehe Bild: fkt)

Was ist also an meiner integrierten Funktion falsch, dass ich nicht die erwarteten Werte rausbekommen?
Ich wäre euch echt dankbar, wenn ihr mir da auf die Sprünge helfen könntet.

Grüße

meine Matlab-Funktion.PNG
 Beschreibung:

Download
 Dateiname:  meine Matlab-Funktion.PNG
 Dateigröße:  21.18 KB
 Heruntergeladen:  326 mal
fkt.PNG
 Beschreibung:

Download
 Dateiname:  fkt.PNG
 Dateigröße:  261.6 KB
 Heruntergeladen:  346 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: 05.04.2017, 11:40     Titel:
  Antworten mit Zitat      
Hallo,

du musst Klammern um das (2*pi*f) im Nenner setzen.

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

Forum-Anfänger

Forum-Anfänger


Beiträge: 20
Anmeldedatum: 04.04.17
Wohnort: ---
Version: R2018b
     Beitrag Verfasst am: 05.04.2017, 11:54     Titel:
  Antworten mit Zitat      
DANKE! Ich war wirklich der Meinung, dass ich das schon probiert hätte...

Danke nochmal.

Damit ist das Thema schon geschlossen.

Beste Grüße
Private Nachricht senden Benutzer-Profile anzeigen
 
at0m_t0mato
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 20
Anmeldedatum: 04.04.17
Wohnort: ---
Version: R2018b
     Beitrag Verfasst am: 02.05.2017, 14:44     Titel: Sin-Funktion mit syms integrieren und plotten
  Antworten mit Zitat      
Hallo liebe User,

ich möchte an dieser Stelle nochmal kurz an das vorangegangene Thema anknüpfen:

Ich will eine sin-Funktion unbestimmt integrieren und anschließend plotten. Dass ich das mit der symbolic math toolbox machen kann, habe ich schon überall gelesen und auch gemacht... Allerdings weiß ich nun nicht, wie ich die neue Funktion plotten kann, da mir immer die Fehlermeldung:

"Error using plot
Conversion to double from sym is not possible."

raushaut.

Mein code sieht folgender Maßen aus:
Code:

y=A*sin(2*pi*f2*t);         %sin-Funktion
syms t;                     %Symbolic Math Toolbox
Y=int(A*sin(2*pi*f2*t));    %unbestimmt integrierte Funktion

figure(2)
subplot(2,1,1)
plot(t, y); grid on;        %Darstellung der sin-Funktion

subplot(2,1,2)
plot(t, Y)                  %Darstellung der integrierten sin-Funktion
 


Kann mir jemand sagen, was noch falsch ist bzw. was ich tun kann, damit ich die Funktion plotten kann? Ich hoffe, dass diesen Thread hier überhaupt noch jmd liest.

Gruß
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: 02.05.2017, 14:53     Titel:
  Antworten mit Zitat      
Hallo,

für symbolische Ausdrücke gibt es eigene Visualisierungsfunktionen mit einem vorangestellten f.

Code:
syms t;
A = 2;
f2 = 1;
Y=int(A*sin(2*pi*f2*t));
fplot(Y)


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

Forum-Anfänger

Forum-Anfänger


Beiträge: 20
Anmeldedatum: 04.04.17
Wohnort: ---
Version: R2018b
     Beitrag Verfasst am: 02.05.2017, 15:13     Titel:
  Antworten mit Zitat      
Danke für die schnelle Antwort.

Mit fplot hab ich's auch schon probiert, aber das funktioniert noch nicht so wirklich...
Wenn ich es so mache, wie Sie es mir eben vorgeschlagen haben, dann kommt die Fehlermeldung "Not enough input arguments."

Ich möchte die integrierte Funktion ja nun auch über die gleiche Zeit t darstellen, wie es bei der anfänglichen Sinus-Funktion der Fall war.
"t" war ursprünglich ja mal ein (Zeit)-Vektor mit [0:...:0.5]. Durch syms hat sich ja nun der Typ geändert, weshalb ich beim fplot nicht mehr den Vektor t verwenden kann, so wie ich es gerne tun würde.

Gibt es da irgendeine Lösung, wie ich die integrierte Funktion trotzdem darstellen kann?

Das Ergebnis soll im Grunde so aussehen, wie auf dem Bild, welches ich angehängt habe...

v und s test bild.PNG
 Beschreibung:

Download
 Dateiname:  v und s test bild.PNG
 Dateigröße:  127.37 KB
 Heruntergeladen:  322 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: 02.05.2017, 15:32     Titel:
  Antworten mit Zitat      
Hallo,

Zitat:
Wenn ich es so mache, wie Sie es mir eben vorgeschlagen haben, dann kommt die Fehlermeldung "Not enough input arguments."

Dann wird es irgendeinen Unterschied im Code geben. Um das Problem zu erkennen, bräuchte ich den Code.

Zitat:
Ich möchte die integrierte Funktion ja nun auch über die gleiche Zeit t darstellen, wie es bei der anfänglichen Sinus-Funktion der Fall war.
"t" war ursprünglich ja mal ein (Zeit)-Vektor mit [0:...:0.5]. Durch syms hat sich ja nun der Typ geändert, weshalb ich beim fplot nicht mehr den Vektor t verwenden kann, so wie ich es gerne tun würde.

Gibt es da irgendeine Lösung, wie ich die integrierte Funktion trotzdem darstellen kann?

Code:
fplot(Y, [0, 0.5])

Das steht übrigens auch in der Doku ;)

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

Forum-Anfänger

Forum-Anfänger


Beiträge: 20
Anmeldedatum: 04.04.17
Wohnort: ---
Version: R2018b
     Beitrag Verfasst am: 02.05.2017, 15:50     Titel:
  Antworten mit Zitat      
Ich poste einfach mal den gesamten code. Ungünstig ist leider nur, dass ich daten aus einem Excel-File einlese und importiere. Ich weiß nicht... kann man die Vektoren irgendwie speichern, so dass der code auch funktioniert?

Ansonsten erstmal:
Code:

clear all
close all
clc

%Variablen
Fs = 2560;      %Abtastfrequenz 2,56kHz
Ts = 1/Fs;      %Zeitintervall
L = 1281;       %Länge des Signals
t = [];         %Messdauer 0,5 s
v1 = [];        %gemessene Geschwindigkeit

%Daten aus Excel importieren
%==================================================
Filename = 'Daten & Auswertung Rotation 20Hz.xlsx';
t=[t; xlsread(Filename,'Tabelle1','a4:a1284')];
v1=[v1 ; xlsread(Filename,'Tabelle1','b4:b1284')];

%Zeitsignal========================================
fig = figure(1);
subplot(3,1,1);                     %Darstellung der Rohdaten
plot(t,v1); grid on; grid minor;    %von v1 im Zeitbereich
xlabel('Zeit [s]');
ylabel('Geschwindigkeit [ms^-1]');
title('Zeitsignal');

g = fft(v1);

P2 = abs(g/L);
P1 = P2(1:L/2+0.5);
P1(2:end-1) = 2*P1(2:end-1);

%Frequnzspektrum====================================
f = Fs*(0:(L/2))/L;
subplot(3,1,2);
plot(f,P1), grid on;
xlabel('Frequenz [Hz]');
ylabel('Amplitude');
title('Frequenzsignal');
axis([0 100 -5*10^-5 5*10^-4])

%Rauschen entfernen====================================
for i = 1:length(P1)                    
    if P1(i) > 0 && P1(i) < 4*10^-4  
        P1(i)=0;
    end
end

%Frequenzspektrum ohone Rauschen========================
subplot(3,1,3)
stem(f, P1); grid on; grid minor;
xlabel('Frequenz [Hz]');
ylabel('Amplitude');
title('Frequenzsignal');
axis([0 100 -5*10^-5 5*10^-4])


k=find(P1);                 %Position finden, an der P1 nicht Null ist
f2 =round(f(k));            %Frequenz lesen, an der P1 max ist
A = max(P1);                %max Wert von P1 entspricht Amplitude

y=A*sin(2*pi*f2*t);         %sin-Funktion


figure(2)
subplot(2,1,1)
plot(t, y); grid on;        %Darstellung der sin-Funktion

syms t;                     %Symbolic Math Toolbox
Y=int(A*sin(2*pi*f2*t));    %unbestimmt integrierte Funktion

subplot(2,1,2)
fplot(Y, [0 0.5])           %Darstellung der integrierten sin-Funktion
 


...ja, und das mit dem "fplot(Y, [0 0.5])" hatte ich auch schon probiert - ohne Erfolg leider. Ich bin da gerade auch wirklich etwas ratlos Crying or Very sad
Private Nachricht senden Benutzer-Profile anzeigen
 
at0m_t0mato
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 20
Anmeldedatum: 04.04.17
Wohnort: ---
Version: R2018b
     Beitrag Verfasst am: 02.05.2017, 18:10     Titel:
  Antworten mit Zitat      
ok, jetzt habe ich's selber hinbekommen!

Wenn man fplot benutzen will, muss man den Befehl "matlabFunction" verwenden. Dieser wandelt den symbolische Objekt in eine "anonyme MatlabFunktion" um.

Etwa so:
Code:

y=A*sin(2*pi*f2*t);         %sin-Funktion


figure(2)
subplot(2,1,1)
plot(t, y); grid on;        %Darstellung der sin-Funktion

syms t;                     %Symbolic Math Toolbox
Y=int(A*sin(2*pi*f2*t));    %unbestimmt integrierte Funktion

subplot(2,1,2)
fplot(matlabFunction(Y), [0, 0.5]) %Darstellung der integrierten sin-Funktion
 


hier nochmal der Link dazu:
https://de.mathworks.com/matlabcent.....ession-for-use-with-fplot


Danke trotzdem, Harld!!!
Sie haben mir mit Ihren Hinweisen sehr geholfen!
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: 02.05.2017, 22:32     Titel:
  Antworten mit Zitat      
Hallo,

Variablen kann man als .mat-Datei abspeichern.

Ich habe den Code getestet und er lief. Wenn das bei dir nicht der Fall ist, kann es höchstens sein, dass du eine ältere MATLAB-Version verwendest. Das dann am besten ins Profil eintragen.

Grüße,
Harald
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.