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

>> Probleme bei Movie erzeugen - getframe - Error

 

stoxxi

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 15.12.2015, 01:11     Titel: >> Probleme bei Movie erzeugen - getframe - Error
  Antworten mit Zitat      
Halloo User-Gemeinde,
Halloo Admins,

habe ein Problem , kleine Movie-Sequenz zu erstellen... Rolling Eyes
dieses im unteren Script bei Abschnitt "Rück-Flug"
anbei ein Beispiel:

Code:
surf(peaks(60))
HP = findobj(gca,'Type','surface') ;
set(HP, 'Facecolor', 'texturemap', 'Edgecolor', 'k')
axis vis3d off
camlight, lighting gouraud;
% ::::::::::::::::::::::::::::Hin-Flug :::::::::::::::::::::.

for x = -200 : 5 : 200
     campos([x, 20, 20])
     drawnow
     pause(0.04)
end
pause(1)
% ::::::::::::::::::::::::::::Rück-Flug :::::::::::::::::::::.
% F= moviein(....) ;      

for x = -200 : 5 : 200
     campos([x, -5, 10])
     drawnow
     pause(0.04)
     F(j) = getframe(gcf);
end
movie2avi(F, 'Fly_Surfpeak.avi', 'compression', 'none');
 


und beim Rück-Flug krieg ich es nicht gebacken ...mit dem Movie2avi ...

denn ich erhalte in der Zeile mit " getframe " folgende Error-Meldung:

??? Subscript indices must either be real positive integers or logicals.

Vielleicht könnt Ihr mir bitte ein paar Tips verraten... oder ein anderen Movie-Befehl ...

Danke vorabfür Zeit und Mühen... Wink
grüße
stoxxii


Mmmartina
Forum-Meister

Forum-Meister


Beiträge: 745
Anmeldedatum: 30.10.12
Wohnort: hier
Version: R2020a
     Beitrag Verfasst am: 15.12.2015, 09:42     Titel:
  Antworten mit Zitat      
Was ist denn "F(j)" ?
'Ich sehe weder F, noch j deklariert in deinem Code.
_________________

LG
Martina

"Wenn wir bedenken, daß wir alle verrückt sind, ist das Leben erklärt." (Mark Twain))
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 15.12.2015, 09:42     Titel: Re: >> Probleme bei Movie erzeugen - getframe - Error
  Antworten mit Zitat      
Hallo stoxxi,

Wenn Du den Debugger verwendest, kannst Du den Fehler leicht selbst identifizieren:
Code:

Code:
for x = -200 : 5 : 200
   ...  
   F(j) = getframe(gcf);
end

Welchen Wert hat denn hier "j"? Offensichtlich ist es kein "real positive integers or logicals". Wenn es vorher nicht definiert wurde ist es wohl die imaginäre Einheit und damit als Index unbrauchbar.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 15.12.2015, 09:48     Titel:
  Antworten mit Zitat      
Hallo,

du definierst j nirgends, und dann ist j die imaginäre Einheit. Das wird übrigens auch nicht grundlos im Editor markiert ;)

Eine Möglichkeit:
Code:
j = 1;
for x = -200 : 5 : 200
     campos([x, -5, 10])
     drawnow
     pause(0.04)
     F(j) = getframe(gcf);
     j = j + 1;
end


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

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 15.12.2015, 09:56     Titel: >> klar, "j" ist soo Grütze
  Antworten mit Zitat      
halloo Jan,
Halloo guru,

klar, da habe ich gepennt ... also das "j" ist wohl vorher nicht definiert von mir ... Embarassed
Das passiert, wenn man nur ein "Ab & Zu" - Matlab-User ist ...

aber wenn ich das "x" nehme .. klappt das auch nicht ... ich brauch wohl einen andere Index-Variable ???

was ich gestern abend noch in halbwegs-verständlichen deutschsprachigen Scripten gefunden habe ist ,
das "getframe" wohl von jedem Loop-Durchlauf ein "Frame" einsammelt ... also wohl eine Grafik-Berechnung pro Run ...

Muß ich - Zwischen Frage an Euch - vor der "For-Loop" mit "Movein" eine Platz-Variable schaffen ???

Mit dem Debugger kann ich nicht so umgehen ... wenn ich nachher wieder zu Hause bin, probiere ich es noch mal aus ...

Grüße
stoxxii
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 15.12.2015, 10:00     Titel:
  Antworten mit Zitat      
Hallo,

vielleicht hast du da schon gerade an deiner Antwort getippt, aber ich habe dir einen funktionierenden Code geschrieben.

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

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 15.12.2015, 12:43     Titel: ..jo, hatten uns überschnitten
  Antworten mit Zitat      
Danke Harald,

das klappt jetzt besser mit dem Lauf- bzw. Zähl-Index ... Smile

Ich hätte noch ergänzende Frage :

Das Movie in Avi-Format ist bei mir 54.5 MB groß, aber ruckelt etwas ... Rolling Eyes

In Matlab Figure läuft die Grafik flüssiger ab ...

ich habe auch die Pause auf 0.01 herunter genommen ... und sogar

Code:
set(gcf,'DoubleBuffer','on');


eingebaut ... aber leider ruckelt das Avi-Movie ...

Könnt ihr mir bitte , oder du , ein techn. Tip geben, wie ich die Auflösung ,
die sicher dafür verantwortlich ist, verändere , damit das Ruckeln bei doch diesem Kurz-Video wegbleibt ???

oder wenn nicht die Auflösung, eventuell eine andere Einstellung verändern ???

Vielen Dank vorab...
grüße
stoxxii
 
Harald
Forum-Meister

Forum-Meister


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

wie wäre es, in Schritten von 1 statt 5 zu gehen, und VideoWriter zu verwenden?

Code:
surf(peaks(60))
v = VideoWriter('Fly_Surfpeak.avi');
open(v)
j = 1;
for x = -200 : 1 : 200
    campos([x, -5, 10])
    drawnow
    pause(0.04)
    F(j) = getframe(gcf);
    writeVideo(v, F(j))
    j = j + 1;
end
close(v)


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

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 15.12.2015, 16:34     Titel: >> Danke ...
  Antworten mit Zitat      
Halloo Harald,

sag bitte , den VideoWriter gibt es den schon bei Matlab 6.5 R13 Rolling Eyes
oder erst mit den Release-Wechsel 2007 also ab den 7.0 Versionen .. ???

und dann gleich noch ne Frage :
mal angenommen , ich habe das DING "VideoWriter" nicht ...

Wie kann ich bitte schön, meine 3-Sekunden-lange 55 MB-Große Crying or Very sad
erzeugte Avi-Datei komprimieren ... ???

Das ist einfach zu groß , für die ART der Grafik,
3 Sekunden Aufzeichnung und dann 55 MB größe ... Horror ... Crying or Very sad
das würde für 30 Sek. bedeuten == 550 MB ... Horror

Danke nochmal vorab ... für Tips und Tricks ...
grüße
stoxxii
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 15.12.2015, 17:04     Titel:
  Antworten mit Zitat      
Hallo,

Zitat:
sag bitte , den VideoWriter gibt es den schon bei Matlab 6.5 R13

Nein, seit R2010b. Wenn du mit einer so alten Version arbeitest, dann registriere dich doch bitte und trage das in dein Profil ein.

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

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 15.12.2015, 17:57     Titel: >> Video bzw. Grafik Kompression möglich
  Antworten mit Zitat      
halloo Harald,

kannst du mir bitte noch ein Tip verraten, wie man eventuell
meine " surf-peak" - Grafik bzw. das erzeugte Avi-Video komprimieren kann ???
damit diese Avi-Datei nicht so groß wird ... Rolling Eyes

Danke ..
grüße
uwe
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 15.12.2015, 19:07     Titel: Re: >> Video bzw. Grafik Kompression möglich
  Antworten mit Zitat      
Hallo stoxxii,

Wie wäre eine Ausgabe in ein animiertes GIF?
Im Netz findet man dazu Beispiele.

Gruß, Jan
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 - 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.