仿真秀平台一直有做针对于matlab入门的公开课,算法工匠带你学MATLAB基础课程,入门一段时间后我们就可以用
matlab做一下有意思的事比如说画个动态图:
是不是很神奇,使用好matlab动态绘图技能可以做很多有意义的是,关于动态绘图主要使用到以下几个命令:
第一种方法需要使用到的命令有:
getframe:是图像动态化,将每一帧的画面数据转换为列向量储存在自定义矩阵中。
movie:播放储存的自定义矩阵中的画面数据。
用这两个命令就可以绘制正弦函数的动态变化了 。代码如下:
clc,clear,close all % 清存 warning off % 取消警告 feature jit off % 加速代码执行 x=-8:0.1:8; y=sin(x); figure1 = figure; axes1 = axes('Parent',figure1,'Position',[0.12 0.12 0.8 0.8]); plot(x,y,'LineWidth',2); % 创建 arrow annotation(figure1,'arrow',[0.52 0.52],[0.12 0.90],'LineWidth',2); annotation(figure1,'arrow',[0.12 0.90],[0.52 0.52],'LineWidth',2); set(axes1,'GridColor',[0 0 0],'MinorGridColor',[0.101960784313725 0.101960784313725 0.101960784313725],'XColor',[1 1 1],'YColor',[1 1 1]); %fmat=moviein(20); %创建一个动画的矩阵,保存20祯 gg = 1; for j=1:30; plot(x,0.1*j*y,'LineWidth',2); %循环创建动画数据 text('Parent',axes1,'FontSize',16,'FontName','Times New Roman','Interpreter','latex','String','$$y=A*sin(x)$$','Position',[-5 2 0],'Visible','on'); text('Parent',axes1,'FontSize',16,'FontName','Times New Roman','Interpreter','latex', 'String','$$x$$','Position',[5 -0.2 0],'Visible','on'); axis([-8 8 -3 3]) set(axes1,'GridColor',[0 0 0],'MinorGridColor',[0.101960784313725 0.101960784313725 0.101960784313725],'XColor',[1 1 1],'YColor',[1 1 1]); fmat(:,j)=getframe; %拷贝祯到矩阵fmat中 im = frame2im(getframe); [I,map] = rgb2ind(im,256); if gg == 1 imwrite(I,map,'lxx.gif','GIF', 'Loopcount',inf,'DelayTime',0.1); gg = gg 1; else imwrite(I,map,'lxx.gif','WriteMode','append','DelayTime',0.1); end end movie(fmat,5)
现在再演示另一种命令实现的方式。
drawnow:刷新图片窗口
使用该命令的思路是不断更新图像数据用drawnow;刷新图像就可以让图动起来。过冷水就
采用动态绘图给大家演示一下农夫是如何带着他的狼、羊、菜过河的。
由于平台视频上传不太方便,感兴趣的可以看该链接 Matlab 动态演示农夫渡河视频
由于动态过河代码较为繁琐,关于动Matlab 动态演示农夫渡河的代码可以看我的附件 。读者要是有想好动态绘图点子都可以给多冷水留言,过冷水帮你们实现创意。