Plot animation Effcientcey and double to struct error
2 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
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');
ylabel(bstr,'Color','g');
ylim([-(Beam.y(10)) max(Beam.y)]);
title(astr,'Color','y','fontweight','b');
set(S.ax,'YDir','reverse');
set(S.ax,'XGrid','on');
set(S.ax,'YGrid','on');
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')
set(ht,'YDataSource','Beam.y')
end
set(ht,'XData',Beam.x(1:i))
set(ht,'YData',Beam.y(1:i))
M(i) = getframe(gcf); % this says that I shoudld preallocate it but when I do I get an error
end
legend('Without Deflection','With Deflection');
hold off
0 Kommentare
Antworten (1)
Walter Roberson
am 8 Dez. 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.
3 Kommentare
Walter Roberson
am 8 Dez. 2012
M(100) = struct('cdata',[], 'colormap', []); %preinitialization
Siehe auch
Kategorien
Mehr zu Animation finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!