24小时热门版块排行榜    

查看: 1109  |  回复: 4

anychi

金虫 (小有名气)

[求助] 求助:如何用matlab实现一个沿x轴运动的且半径随x坐标变化的圆的轨迹图 已有1人参与

以下程序可以实现一个沿x轴运动的圆的轨迹图,但圆的半径是不变的:
>> x = 40:0.1:67.53; % 函数变量取值范围
y = 0;  % 函数
plot(x,y);
axis equal
hold on
rho = 0.25;  % 圆的半径
rho = rho*ones(1,100);
theta = linspace(-pi,pi,100);
[xx,yy] = pol2cart(theta,rho);
h = plot(xx,yy,'r');
for ii = 40:0.2:67.53
    data = ii;
    set(h,'Xdata',xx+ii);
    pause(0.01);   % 调整速度
end
求助用matlab实现一个沿x轴运动的且半径随x坐标变化的圆的轨迹图,
具体来说圆的半径R(x)=-3.79263*10^(-5)*x^4+0.00856*x^3-0.7236*x^2+27.35571*x-387.14149
x的变化范围是40~67.53
回复此楼

» 收录本帖的淘帖专辑推荐

matlab编程绘图

» 猜你喜欢

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

Mr__Right

专家顾问 (著名写手)

【答案】应助回帖

★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★
感谢参与,应助指数 +1
anychi: 金币+50, ★★★★★最佳答案, 很好地解决了我的问题 2015-08-15 14:30:00
CODE:
clear all ;
close all;
clc;
x0=40;
r=-3.79263*10^(-5)*x0^4+0.00856*x0^3-0.7236*x0^2+27.35571*x0-387.14149;
lb=x0-r; ub=x0+r;
x=linspace(lb,ub,300);
y1=-sqrt(r^2-x.^2+2*x0*x-x0^2);
y2=sqrt(r^2-x.^2+2*x0*x-x0^2);
scrsz = get(0,'ScreenSize');
hb=figure('Position',[150 50 scrsz(3)-200 scrsz(4)-200],'color','white');
h=plot(x,y1,'r',x,y2,'r'); axis([30,80,-12,12]) ;
for x0=40:.5:70, r=-3.79263*10^(-5)*x0^4+0.00856*x0^3-0.7236*x0^2+27.35571*x0-387.14149;
lb=x0-r;
ub=x0+r;
x=linspace(lb,ub,300);
y1=-sqrt(r^2-x.^2+2*x0*x-x0^2);
y2=sqrt(r^2-x.^2+2*x0*x-x0^2);
set(h(1),'xdata',x,'ydata',y1);
set(h(2),'xdata',x,'ydata',y2);     
pause(0.1) ;
end

文章乃身外之物,要多考虑编辑、审稿人和读者的感受。
2楼2015-08-15 10:41:30
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

anychi

金虫 (小有名气)

引用回帖:
2楼: Originally posted by Mr__Right at 2015-08-15 10:41:30
clear all ;
close all;
clc;
x0=40;
r=-3.79263*10^(-5)*x0^4+0.00856*x0^3-0.7236*x0^2+27.35571*x0-387.14149;
lb=x0-r; ub=x0+r;
x=linspace(lb,ub,300);
y1=-sqrt(r^2-x.^2+2*x0*x-x0^2);
y2=sqr ...

谢谢您的回答。我还有一个小问题,就是想在上面的动画中添加一条y=0的水平线,并且一直存在,请问代码应该如何修改一下。
3楼2015-08-15 14:31:21
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

Mr__Right

专家顾问 (著名写手)

引用回帖:
3楼: Originally posted by anychi at 2015-08-15 14:31:21
谢谢您的回答。我还有一个小问题,就是想在上面的动画中添加一条y=0的水平线,并且一直存在,请问代码应该如何修改一下。...

CODE:
h=plot(......................);

改成
CODE:
h=plot(x,y1,'r',x,y2,'r',[0,100],[0,0],'g:');

» 本帖已获得的红花(最新10朵)

文章乃身外之物,要多考虑编辑、审稿人和读者的感受。
4楼2015-08-15 16:11:53
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

anychi

金虫 (小有名气)

送红花一朵
引用回帖:
4楼: Originally posted by Mr__Right at 2015-08-15 16:11:53

h=plot(......................);
改成
h=plot(x,y1,'r',x,y2,'r',,,'g:');...

谢谢
5楼2015-08-15 17:24:06
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 anychi 的主题更新
信息提示
请填处理意见