简单有趣的matlab小程序_Matlab 有趣的小程序学习(一)

本文介绍了一个简单的Matlab小程序,允许用户自定义刷新时间,并结合月亮和探月器的公转概念。当设置错误的刷新时间(如负数或0)时,程序会显示错误提示。程序运行后呈现动态效果。主要涉及开始和结束按钮的回调函数实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天分享一个有趣的小程序,起初是在网上偶然看到,经过一定的改良。主要模拟的是月亮绕地公转过程中探月器的登陆,是个非常简略的程序。同时用GUI做了一小点交互,用来学习一下Matlab里面的作图非常不错。大家可以照着图片来自己先动手试试。

c64a650376d21bb14b0a23b3289b4b42.png

如图所示,可以自己设置刷新时间,如果刷新时间设置成负数或是0会弹出错误提示框。

44e7c6f7b9aace107a57bc22a1898994.png

刷新时间的设置也和月亮以及探月器的公转角速度相关。程序最终运行完成如下图所示:

df978369dfcc8cdd838be38cbe4a0ed5.png

代码如下:

NO.1  开始按钮的回调函数

----------------------------------

function pushbutton1_Callback(hObject, eventdata, handles)% hObject    handle to pushbutton1 (see GCBO)% eventdata  reserved - to be defined in a future version of MATLAB% handles    structure with handles and user data (see GUIDATA)pausetime = str2double(get(handles.edit1,'string'));%设置刷新时间if pausetime > 0    clc;    figure('name','探月器登陆');   %设置标题名字    title('探月器登陆动画演示','fontsize',15)    x = [0:0.01:2*pi];    hold on;    axis square    axis off     %去除坐标轴    grid on    r1 = 10;      %月亮到地球的距离    r2_begin = 3;    %探月器到月亮的初始距离    w1 = 1;    %月亮公转角速度    w2 = 12;   %探月器绕月亮公转角速度    t = 0;    pausetime = 0.02;   %设置暂停时间    sita1=0;   %初始角度    sita2=0;    %------------设置图例    plot(-20,18,'color','m','marker','.','markersize',40);    text(-17,18,'地球');       %地球    plot(-20,16,'color','b','marker','.','markersize',25);    text(-17,16,'月亮');       %月亮    plot(-20,14,'color','k','marker','.','markersize',15);    text(-17,14,'探月器');       %探月器    %------------    axis([-20,20,-20,20]);    plot(0,0,'color','m','marker','.','markersize',80);  %画地球    plot(r1*cos(x),r1*sin(x));       %画月亮公转轨道(极坐标)    p1 = plot(r1*cos(sita1),r1*sin(sita1),'color','b','marker','.','markersize',30);%画月亮初始位置    l1 = plot(r1*cos(sita1)+r2_begin*cos(x),r1*sin(sita1)+r2_begin*sin(x)); %探月器绕月亮公转轨道    p2x=r1*cos(sita1)+r2_begin*cos(sita2);  %用极坐标画个草图就知道了    p2y=r1*sin(sita1)+r2_begin*sin(sita2);    p2=plot(p2x,p2y,'k','marker','.','markersize',20);  %画探月器的初始位置    orbit=line('xdata',p2x,'ydata',p2y,'color','r');    %画探月器的运动轨迹    for r2 = r2_begin:-0.006:0        sita1=sita1+w1*pausetime;%月亮相对地球转过的角度        sita2=sita2+w2*pausetime;%探月器相对月亮转过的角度        set(p1,'xdata',r1*cos(sita1),'ydata',r1*sin(sita1));%设置月亮的新位置        set(l1,'xdata',r1*cos(sita1)+r2*cos(x),'ydata',r1*sin(sita1)+r2*sin(x));        %设置探月器绕月亮的公转轨道的新位置        ptempx=r1*cos(sita1)+r2*cos(sita2);         ptempy=r1*sin(sita1)+r2*sin(sita2);        set(p2,'xdata',ptempx,'ydata',ptempy);%设置探月器的新位置        p2x = [p2x ptempx];        p2y = [p2y ptempy];        set(orbit,'xdata',p2x,'ydata',p2y); %运动轨迹的连续显示        pause(pausetime);  %暂停        drawnow    end    msgbox('探月登陆完成','有趣的小游戏','warn');else    errordlg('请输入正确刷新时间'); %错误提示end

NO.2  结束按钮的回调函数

----------------------------------

function pushbutton2_Callback(hObject, eventdata, handles)% hObject    handle to pushbutton2 (see GCBO)% eventdata  reserved - to be defined in a future version of MATLAB% handles    structure with handles and user data (see GUIDATA)clcclear allclose all force; %强制关闭所有的图形
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值