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)
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.