MATLAB Answers


Plot animation Effcientcey and double to struct error

Asked by Lawson Hoover on 8 Dec 2012

I am trying to animate a plot. I have got it to work but I seems to moving a tad slow, and Also when I allocate the frames into a variable M with getframe, the M gets a red underline saying that I should preallocate for speed. I have been trying to do this but I get is the error:

   The following error occurred converting from struct to double:
  Error using double
  Conversion to double from struct is not possible.

I have no idea how to fix this. The code I am using is below:

   plot(x,y,'--r','LineWidth',3);  % original position
  xlabel('Beam Length (in.)','Color','g');
  ylim([-(Beam.y(10)) max(Beam.y)]);
  y =0;
  z = 0;
  hold on 
  clear M
  M = zeros(1,100);
  ht = plot(y,z,'-b','linewidth',2); % new position
  for i = 1:100
    if i == 1
        set(ht ,'XDataSource','Beam.x')
  M(i) = getframe(gcf);   % this says that I shoudld preallocate it but when I do I get an error
  legend('Without Deflection','With Deflection');
  hold off



No products are associated with this question.

1 Answer

Answer by Walter Roberson
on 8 Dec 2012

getframe() returns a movie frame, which is a struct. You cannot store a struct into a scalar double location such as M(i) where M has been initialized to zeros(1,100)

What are you going to do with the frames after you get them? If you are going to create a video, then see the documentation for VideoWriter for an example of how to do it.


Lawson Hoover on 8 Dec 2012

Well I was trying to store the frams in one variable and then be able to call up a particular slide, or position, in the movie with a slider or edit box.

Walter Roberson
on 8 Dec 2012
M(100) = struct('cdata',[], 'colormap', []);  %preinitialization
on 24 Apr 2013

Thank you so much! That error was had me stuck all day!

Discover MakerZone

MATLAB and Simulink resources for Arduino, LEGO, and Raspberry Pi test

Learn more

Discover what MATLAB® can do for your career.

Opportunities for recent engineering grads.

Apply Today

MATLAB Academy

New to MATLAB?

Learn MATLAB today!