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

getframe extrem langsam

 

Angela

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.11.2013, 17:00     Titel: getframe extrem langsam
  Antworten mit Zitat      
Hallo,

ich habe folgendes Problem. Ich hab ne Ellipse von der berechne ich die Krümmung und möchte das ganze dann als Animation ausgeben. Ansich funktioniert das ganze auch nur ist die Animation so extrem langsam!

Hier ist mal mein code:
Code:

clc, clear all, close all,

ra = 2.5;   rb = 1.5;
syms x y
f =sqrt(1-(x^2)/(ra^2))*rb;             % ellipse-equation
fplot = x^2/ra^2+y^2/rb^2-1;            % ellipse-equation
Df =diff(f,x);                          % first derivative
DDf =diff(Df,x);                        % second derivative
kappa = DDf/(1+Df^2)^(3/2);             % curvature  
% evaluate
ffunction = inline(f);
kappavalue = inline(kappa);
t1 = [-2.5:0.01:2.5 2.5:-0.01:-2.5];    % x-Points
curvature = zeros(length(t1),1);
for i=1:(length(t1))
    curvature(i) = kappavalue(t1(i));
end
curvature(isnan(curvature))=-1.09;      % replace NaN with -1.09
t = 0:length(curvature)-1;              % time
% Plot
title('curvature')
axis equal;
view(0,90);                             % view from above
grid on;
% Animation
for j=2:length(t+1)
    set(gca,'nextplot','replacechildren')
    % fix ellipse and point on ellipse
    x1 = t1(j-1);
    if j>=length(t+1)/2
       y1 = -ffunction(x1);
    else
       y1 = ffunction(x1);
    end
    subplot(1,2,1)
    plot(x1,y1,'*r','linewidth',1.5);   % point on ellipse
    hold on
    ezplot(fplot);                      % fix ellipse
    axis equal
    axis ([-3 3 -2 2])
    hold off
    % Plot curvature
    t2 = t(2:j);
    x2 = t2;
    y2 = curvature(t2);
    subplot(1,2,2)
    axis ([0-0.05 length(t)+0.05 -1.09 -0.2])
    plot(x2,y2,'b');
    F(j)=getframe;
end
 


Leider bin ich nicht so das Matlab-Genie, deswegen kann es gut sein, das manch ein Befehl unsinnig ist. Ich hab mir das alles aus verschiedenen Foreneinträgen etc. zusammengebastelt.
Kann mir irgendeiner sagen wie ich die Animation schneller machen kann?
Wär echt super wenn mir jemand helfen kann.
Vielen Dank schonmal
Gruß Angela


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 09.11.2013, 13:36     Titel:
  Antworten mit Zitat      
Hallo,

hast du mal den Profiler drüberlaufen lassen? Da sieht man, dass getframe gar nicht die meiste Zeit kostet, sondern ezplot. Wenn du die Ellipse auch noch mit plot erzeugst, dürfte das einiges bringen.

Ansonsten: t1 mit einer gröberen Auflösung wählen.

Wenn du die Animation nicht speichern willst, kannst du getframe durch drawnow ersetzen.

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

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.11.2013, 11:40     Titel:
  Antworten mit Zitat      
Hallo Harald,

vielen Dank für deine Hlfe. Hab das ezplot in ein plot umgeschrieben und t1 verkleinert, jetzt schläft man nicht mehr ein beim zuschauen Smile.

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