我试图使用内置函数bernstein在MATLAB中显示Bernstein多项式的收敛性,bernstein过载了符号变量。
我写了下面的代码,它显示了不同图形窗口中的所有bernstein多项式
我在MathWorks网站上搜索动画,作为MATLAB的初学者,我没有找到一些简单的功能来做到这一点。
请帮我解释一下代码
感谢。
syms x
axis tight
for k=1:10
figure
ezplot(bernstein(sin(x),k,x))
end
答案 0 :(得分:0)
您的代码中存在两个问题:
通过在每次迭代开始时调用figure
,您总是打开一个新的数字窗口,最终得到10个数字。使用例如figure(1)
始终使用数字nr。 1,或者更好的是首先使用h=figure;
创建一个新数字,然后按figure(h)
打开该数字。
现在你看不到多少,因为这些图的生成速度非常快。使用pause
函数,您可以指定迭代之间的延迟,例如延迟0.5秒使用pause(0.5)
。
放在一起,这为您的动画提供了以下代码:
syms x
h = figure;
for k=1:10
figure(h);
ezplot(bernstein(sin(x),k,x));
pause(0.5);
end
答案 1 :(得分:0)
mathworks网站上有非常好的动画教程。
{{3}}
但是,要想先行一步,您可以尝试复制此代码,并在循环中粘贴您自己的函数。
for k = 1:16
figure(1);
axis tight;
plot(sin(k:0.1:k+(2*pi))); % replace with your function
M(k) = getframe;
end
fps = 10; % adjust this to change playback speed
movie(M,1,fps); % run this to play movie
%% Save the animation to avi file
writerObj = VideoWriter('test.avi');
writerObj.FrameRate = fps;
open(writerObj);
writeVideo(writerObj,M);
close(writerObj);
更改fps的值以调整播放速度,您可以随时重新运行行movie(M,1,fps);
以重播动画,而无需再次生成所有帧。最后一段代码将生成的动画保存到具有指定帧速率的AVI文件中。