Forum: PC Hard- und Software Matlab Plot erstellen


von Petr (Gast)


Lesenswert?

Hallo Leute,

bin MATLAB Neuling und versuche gerade aus einer berechneten Funktion 
einen Plot zu erstellen. Die Berechnung habe ich schon hinbekommen. Das 
ist ein Fourier Transformiertes Reckecksignal, das mit einer 
Übertragungsfunktion eines Tiefpasses multipliziert und dann 
rücktransformiert wird. Jetzt meine Frage. Ich würde mir gerne die 
Funktion M(t) als Diagramm ausgeben lassen. Habe schon einiges probiert, 
aber es kam immer der Fehler "
Error using plot
Data must be numeric, datetime, duration or an array convertible to 
double."
Ich vermute das geht irgendwie ganz einfach, aber ich bekomms nicht 
hin...
Vielleicht kann mir da jemand einen Tipp geben oder weiterhelfen.

Danke schon mal!!


clc;

clear all;

syms L f t U;

f = U/2 + ((2*U)/pi) * sin(2*pi*f*t)

L = laplace(f)

syms G s;

G = 1/(1+1*s+0.25*s^2)

syms B;

B = L*G

M(t) = ilaplace(B)

von Stefan W. (bier16v)


Lesenswert?

In Matlab gibt es einen Variableneditor, der zeigt die deine Variablen 
an und auch den Datentyp.
Mit dem Befehl
1
matlabFunction
 kannst du deine inverse Laplace-Funktion in eine Matlab-Funktion 
konvertieren.
Danach noch einen Vektor z.B. für t und die beiden anderen Parameter U 
(z.B. 1) und f (z.B. 10) definieren und plotten :-)
1
fun = matlabFunction(M)
2
fun =
3
  function_handle with value:
4
    @(t,U,f)U./2.0-(1.0./(f.^2.*pi.^2+1.0).^2.*(-U.*sin(f.*t.*pi.*2.0)+U.*f.^2.*pi.^2.*sin(f.*t.*pi.*2.0)+U.*f.*pi.*cos(f.*t.*pi.*2.0).*2.0).*2.0)./pi-(exp(t.*-2.0).*1.0./(f.^2.*pi.^2+1.0).^2.*(U-U.*f.*8.0+U.*f.^2.*pi.^2.*2.0+U.*f.^4.*pi.^4))./2.0-(t.*exp(t.*-2.0).*(U-U.*f.*4.0+U.*f.^2.*pi.^2))./(f.^2.*pi.^2+1.0)
5
6
t=0:0.01:10;
7
plot(t,fun(t, 1, 10))

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.