如何用matlab画一个圆沿着某条直线运动

 我来答
漆颖0gE
推荐于2018-04-15 · TA获得超过374个赞
知道小有建树答主
回答量:207
采纳率:75%
帮助的人:140万
展开全部
x = 0:0.01:5; % 函数变量取值范围
y = x; % 函数
plot(x,y);
axis equal
hold on
rho = 0.1; % 圆的半径
rho = rho*ones(1,100);
theta = linspace(-pi,pi,100);
[xx,yy] = pol2cart(theta,rho);
h = plot(xx,yy,'r');
for ii = 0:0.01:5
data = ii;
set(h,'Xdata',xx+ii,'Ydata',data+yy);
pause(0.01); % 调整速度
end

如果你的直线x,y的比例相差较大,那么axis equal应该删掉,用椭圆代替圆(画出来仍然是圆),椭圆的长轴和短轴的比例可以查看坐标系的DataAspectRatio属性。

还有一个取巧的方法,我刚回答完另一个人,你可以参考一下
x = 0:0.01:5; % 函数变量取值范围

y = sin(x); % 函数

plot(x,y);

hold on

h = plot(0,sin(0),'or', 'MarkerSize', 6);% 调节markersize后的数值调节圆的大小

for ii = 0:0.01:5

data = sin(ii);

set(h,'Xdata',ii,'Ydata',data);

pause(0.01); % 调整速度

end
helen17175
2020-03-19
知道答主
回答量:3
采纳率:0%
帮助的人:1236
展开全部
%滚动的圆环
ccc
Roll=VideoWriter("rolling_circle");%,做成动画文件,注意文件名不加空格,容易出错
open(Roll);
figure %打开新作图窗口
for varphi=0:0.1*pi:6*pi %圆环转过的弧度
if isempty (get (0,'children' )) %if 语句作用:关闭作图窗口后,程序停止
break
end
hold off
t=linspace(0,2*pi,100); %先画每一帧上的圆
xr=varphi+cos(t); %圆心的横坐标
yr=1+sin(t); %圆心的纵坐标
plot(xr,yr) %画圆
hold on
m=linspace(0,varphi,100) %画圆上某一点的轨迹
x=m-sin(m); %轨迹上的横坐标分成100个点
y=1-cos(m); %轨迹上的纵坐标分为100个点
plot(x,y) %画轨迹
axis([0,20,0,5])
writeVideo (Roll,getframe) ;
end
close(Roll);
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
matlab爱好者
2020-12-18 · matlab编程与科研资料分享,欢迎关注!
matlab爱好者
采纳数:16 获赞数:28

向TA提问 私信TA
展开全部

本视频展示如何用matlab绘制散圆状态图,可用于相关科研数据绘图!

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式