Matlab动态图动态点绘制以及保存

本文介绍了如何使用Matlab实现动态曲线绘制,包括使用`animatedline`创建动态线条并添加点,以及自定义`MakeGif`函数来生成GIF动画。同时,还展示了如何绘制动态点并利用循环更新图形。
摘要由CSDN通过智能技术生成

Matlab实现动图以及动点的绘制

前沿

  • 之前一直在用CSDN进行代码和计算机相关知识的学习,但俗话说好记性不如烂笔头,将自己学习、工作生涯遇到的有趣或印象深刻的问题和知识记录下来作为知识的复习,好的接下来进入主题。
    Matlab是一款非常重要的科研软件,本人在大学和现阶段读研中时常用到它,在做最近的课设时为了让数据好看些,想自己做动态图,以下的代码是最基本的动态图以及动态点的绘制,再理解代码基础上大家可以根据自己的项目进行改进。

动态曲线绘制

clc;%清空命令行窗口
close all;%关闭所有图形窗口
clear;%清空所有变量区
%%动态曲线绘制法
x = 0:0.1:2*pi;%x的取值范围,步长为0.1
y = cos(x);%y与x之间的关系
axis([min(x) max(x) min(y) max(y)]);%限制XY轴的范围
line = animatedline('Color','r','LineWidth',3);%主要是animatedline(动态线条)的应用
for i=1:length(x)%一共63组点
    addpoints(line,x(i),y(i));%向 an 指定的动画线条中添加 x 和 y 定义的点
    MakeGif('GifTest.Gif',i);%保存动态图,此句可以不加
    pause(0.1);%调节此参数可以调节曲线动态显示速度
    drawnow;%更新图形,新点会自动连接到之前的点
end

在这里插入图片描述

动态点绘制

clc;%清空命令行窗口
close all;%关闭所有图形窗口
clear;%清空所有变量区
 x = 0:0.1:2*pi;%x的取值范围,步长为0.1
 y = cos(x);%y与x之间的关系
plot(x,y);%先画出动态点所在的曲线
hold on;%添加新绘图的时候保留当前绘图
h = plot(x(1),y(1),'Marker','o');%绘制起始点具体各个参数请查询相关文档
for i=1:length(x)
    set(h,'XData',x(i),'YData',y(i)); %%重置绘图对象
    pause(0.05); %暂停0.1s,使得绘图过程容易观察
    MakeGif('Point.Gif',i)  
end

在这里插入图片描述

关于MakeGif函数

function MakeGif(filename,index)  
    f = getframe(gcf);  
    imind = frame2im(f);  
    [imind,cm] = rgb2ind(imind,256);  
    if index==1  
        imwrite(imind,cm,filename,'gif', 'Loopcount',inf,'DelayTime',0.001);
    else  
        imwrite(imind,cm,filename,'gif','WriteMode','append','DelayTime',0.001);
    end  
end  
  • MakeGif是自定义的函数,它在另一个.m文件中,文件名就是函数名运行时记得main文件和函数文件在一个文件夹下。
    完结:MakeGif函数是知乎一篇文章写的非本人原创,知乎链接忘记了,具体函数内部各个代码运行逻辑笔者没有进行深入学习,感兴趣的大家可以看看帮助文档或者其他帖子

第一遍正式学习记录的博客,希望自己能够坚持记录

  • 10
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
MATLAB 是一种强大的科学计算工具,它不仅支持各种数学运算、数据分析及算法设计,还集成了图形用户界面和丰富的绘图功能。对于物理学科的研究,尤其是电磁学领域,利用 MATLAB 绘制电场线是非常常见的一项操作。下面将详细介绍如何在 MATLAB绘制单个电荷的电场线动态图。 ### 步骤一:理解基本概念 **单个电荷电场**:由库仑定律可知,在给定位置,电荷产生的电场强度大小与其电量成正比,与距离的平方成反比,并沿电荷指向的方向矢量表示。电场线上任意一的切线方向代表该的电场方向,而电场线密度反映电场的强度。 ### 步骤二:创建函数用于计算电场 首先,需要编写一个函数来计算空间中任一的位置处的电场向量。例如: ```matlab function E = electricField(position) % position is a vector [x, y] or [x, y, z] q = 1; % point charge in coulombs r = norm(position); E = q * (position / r.^3); % Electric field vector ``` 这里假设电荷的电量 `q` 为单位值,可以根据实际情况调整。 ### 步骤三:设置绘图范围和网格 为了生成动态图,我们需要设置一定的起始和终止以及步长来描绘整个电场图的动态变化。例如: ```matlab [X,Y] = meshgrid(-5:0.1:5,-5:0.1:5); % Create grid for x and y coordinates positions = [X(:), Y(:)]; % Convert to a list of positions ``` ### 步骤四:计算所有位置处的电场并向量场图添加箭头 接下来,我们遍历网格上每个的位置,计算对应的电场向量,并用箭头表示出来。使用 `quiver` 函数进行可视化: ```matlab figure; hold on; for i = 1:length(positions(:,1)) E = electricField(positions(i,:)); % Calculate electric field at each point U = E(1)*ones(size(X)); % Field component along X axis V = -E(2)*ones(size(Y)); % Field component along Y axis quiver(X, Y, U, V) % Draw arrows representing the electric field vectors end axis equal; % Ensure that the aspect ratio is equal so circles look like circles xlabel('X'); ylabel('Y'); title('Electric Field Lines from a Point Charge'); colorbar; % Optional: add colorbar for magnitude representation if needed ``` ### 步骤五:增加动画效果 通过循环更新并显示电场图来实现动态展示。这通常涉及到保存一系列帧并使用其他软件播放它们作为动画,因为直接在 MATLAB 中进行实时动画渲染可能会很复杂: ```matlab frames = []; frameNum = 0; for angle = 0:pi/6:2*pi positions = [cos(angle)*4, sin(angle)*4]; % Move the charge around frameNum = frameNum + 1; [U, V] = deal(zeros(size(X))); % Reset components for i = 1:length(positions(:,1)) E = electricField([positions(i,1), positions(i,2)]); % Update electric field based on new position U = U + E(1).*ones(size(X)); V = V - E(2).*ones(size(Y)); end frames{frameNum} = quiver(X, Y, U, V); end % Save as animation or GIF using additional functions not directly supported by MATLAB ``` ### 相关问题: 1. **如何调整电荷的位置和电量对电场的影响?** 2. **能否通过修改上述代码实现三维电场图?** 3. **如何仅在特定区域或路径上绘制电场线?** --- 以上步骤详细介绍了如何使用 MATLAB 来构建单个电荷电场线的动态图。每一步都旨在帮助理解关键概念和实践应用,同时鼓励进一步探索 MATLAB 的强大绘图能力。
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值