文档详情

各种matlab时钟程序

沈***
实名认证
店铺
DOC
79.50KB
约23页
文档ID:157027079
各种matlab时钟程序_第1页
1/23

收藏的各种matlab时钟程序:(超级强大)提示:如果把此程序变成.exe格式会不会更好玩,有兴趣可以试下,我是没搞出来时钟程序1:% function clock1hfig=figure('visible','off');set(hfig,'NumberTitle','off');set(hfig,'name','My Clock');set(hfig,'MenuBar','none');set(hfig,'color',[0.5 0.7 0.3]);set(hfig,'visible','on');A=linspace(0,6.3,1000);x1=8*cos(A);y1=8*sin(A); x2=7*cos(A);y2=7*sin(A);plot(x1,y1,'b','linewidth',1.4)hold onplot(x2,y2,'b','linewidth',3.5)fill(0.4*cos(A),0.4*sin(A),'r');axis off axis([-10 10 -10 10])axis equalset(gca,'position',[0.13 0.05 0.775 0.815])title(date,'fontsize',18)for k=1:12;xk=9*cos(-2*pi/12*k+pi/2);yk=9*sin(-2*pi/12*k+pi/2);plot([xk/9*8 xk/9*7],[yk/9*8 yk/9*7],'color',[0.3 0.8 0.9])h=text(xk,yk,num2str(k),'fontsize',16,'color',...[0.9 0.3 0.8],'HorizontalAlignment','center');end% 计算时针位置ti=clock;th=-(ti(4)+ti(5)/60+ti(6)/3600)/12*2*pi+pi/2;xh3=4.0*cos(th);yh3=4.0*sin(th);xh2=xh3/2+0.5*cos(th-pi/2);yh2=yh3/2+0.5*sin(th-pi/2);xh4=xh3/2-0.5*cos(th-pi/2);yh4=yh3/2-0.5*sin(th-pi/2);hh=fill([0 xh2 xh3 xh4 0],[0 yh2 yh3 yh4 0],[0.6 0.5 0.3]); % 计算分针位置tm=-(ti(5)+ti(6)/60)/60*2*pi+pi/2;xm3=6.0*cos(tm);ym3=6.0*sin(tm);xm2=xm3/2+0.5*cos(tm-pi/2);ym2=ym3/2+0.5*sin(tm-pi/2);xm4=xm3/2-0.5*cos(tm-pi/2);ym4=ym3/2-0.5*sin(tm-pi/2);hm=fill([0 xm2 xm3 xm4 0],[0 ym2 ym3 ym4 0],[0.6 0.5 0.3]);% 计算秒针位置ts=-(ti(6))/60*2*pi+pi/2;hs=plot([0 7*cos(ts)],[0 7*sin(ts)],...'color',[0.6 0.5 0.3],'linewidth',3);set(gcf,'doublebuffer','on');k=1;while k<6;ti=clock;% 计算时针位置th=-(ti(4)+ti(5)/60+ti(6)/3600)/12*2*pi+pi/2;xh3=4.0*cos(th);yh3=4.0*sin(th);xh2=xh3/2+0.5*cos(th-pi/2);yh2=yh3/2+0.5*sin(th-pi/2); xh4=xh3/2-0.5*cos(th-pi/2);yh4=yh3/2-0.5*sin(th-pi/2);set(hh,'XData',[0 xh2 xh3 xh4 0],'YData',[0 yh2 yh3 yh4 0]) % 计算分针位置tm=-(ti(5)+ti(6)/60)/60*2*pi+pi/2;xm3=6.0*cos(tm);ym3=6.0*sin(tm);xm2=xm3/2+0.5*cos(tm-pi/2);ym2=ym3/2+0.5*sin(tm-pi/2);xm4=xm3/2-0.5*cos(tm-pi/2);ym4=ym3/2-0.5*sin(tm-pi/2);set(hm,'XData',[0 xm2 xm3 xm4 0],'YData',[0 ym2 ym3 ym4 0])% 计算秒针位置ts=-(ti(6))/60*2*pi+pi/2;set(hs,'XData',[0 7*cos(ts)],'YData',[0 7*sin(ts)])drawnow;pause(0.09)end 时钟程序2:% function clock2% clf;shg;h=figure('menubar','none',... 'color','white',... 'position',[200 200 320 360],... 'name','CLOCK');e1=uicontrol('parent',h,... %定义一个edit控件,用于存储日期 'style','edit',... %该控件的类型为edit,可以编辑其内容 'fontsize',12,... %字体大小为12 'position',[110 20 120 30]); %位置,距离左边110,距离底边20,宽度为120,高度为30b1=uicontrol('parent',h,... %定义一个text控件,显示刻度“12” 'style','text',... 'string','12',... 'fontsize',12,... 'position',[156 275 20 20]);b2=uicontrol('parent',h,... %定义一个text控件,显示刻度“9” 'style','text',... 'string','9',... 'fontsize',12,... 'position',[60 175 20 20]);b3=uicontrol('parent',h,... %定义一个text控件,显示刻度“6” 'style','text',... 'string','6',... 'fontsize',12,... 'position',[156 75 20 20]);b4=uicontrol('parent',h,... %定义一个text控件,显示刻度“3” 'style','text',... 'string','3',... 'fontsize',12,... 'position',[260 175 20 20]);s1=[0:pi/1000:2*pi];hl=plot(cos(s1),sin(s1),'b-'); %绘制表盘的外圆time=datestr(now); %得到当前时间set(e1,'string',time(1:11)); %当前时间的1:11位是日期,把日期值给elsita1=pi/2-str2num(time(19:20))*pi/30; %秒针转过的角度sita2=pi/2-str2num(time(16:17))*pi/30+sita1/60; %分针转过的角度sita3=pi/2-str2num(time(13:14))*pi/6+sita2/12; %时针转过的角度w1=-pi/30; %设置秒针每秒转过的角度,分针走一个半圆需要30sw2=-pi/1800; %设置分针每秒转过的角度w3=-pi/108000; %设置时针每秒转过的角度pausetime=1;axis off;axis equalhold onplot(0,0,'or');%设置刻度for n=pi*2:-pi/30:pi/30 %绘制表盘,绘制分钟的刻度 a1=0.95*cos(n):0.05*cos(n)/2:cos(n);b1=0.95*sin(n):0.05*sin(n)/2:sin(n); plot(a1,b1,'r-');endfor n=pi*2:-pi/6:pi/30 %绘制表盘,绘制小时的刻度 a1=0.9*cos(n):0.1*cos(n)/2:cos(n);b1=0.9*sin(n):0.1*sin(n)/2:sin(n); plot(a1,b1,'r-');end%时钟指针while 1 x1=0:0.75*cos(sita1)/2:0.75*cos(sita1);y1=0:0.75*sin(sita1)/2:0.75*sin(sita1); %根据秒针的位置绘制分针 x2=0:0.6*cos(sita2)/2:0.6*cos(sita2);y2=0:0.6*sin(sita2)/2:0.6*sin(sita2); %根据分针的位置绘制分针 x3=0:0.45*cos(sita3)/2:0.45*cos(sita3);y3=0:0.45*sin(sita3)/2:0.45*sin(sita3); %根据时针的位置绘制分针 hp1=plot(x1,y1,'b-'); hp2=plot(x2,y2,'b-','linewidth',2); hp3=plot(x3,y3,'g-','linewidth',2); sita1=sita1+w1*pausetime; %计算一秒以后秒针的角度位置 sita2=sita2+w2*pausetime; %计算一秒以后分针的角度位置 sita3=sita3+w3*pausetime; %计算一秒以后时针的角度位置 pause(pausetime); delete(hp1); delete(hp2); delete(hp3);endhold off 时钟程序3:% function clock3tryclose allhfig=figure('NumberTitle','off','name','Clock Animation Demo--matlabfan','MenuBar','none');theta=linspace(0,6.3,1000);x1=8*cos(theta);y1=8*sin(theta);plot(x1,y1,'b','linewidth',1.4)%绘制外表盘hold onaxis equalx2=7*cos(theta);y2=7*sin(theta);plot(x2,y2,'y','linewidth',3.5)%绘制内表盘fill(0.4*cos(theta),0.4*sin(theta),'r');%绘制指针转轴axis off axis([-10 10 -10 10])set(gca,'position',[[0.13 0.05 0.775 0.815]])title(date,'fontsize',18)for k=1:12;xk=9*cos(-2*pi/12*k+pi/2);yk=9*sin(-2*pi/12*k+pi/2);plot([xk/9*8 xk/9*7],[yk/9*8 yk/9*7],'color',[0.3 0.8 0.9]);text(xk,yk,num2str(k),'fontsize',16,'color',[0.9 0.3 0.8],'HorizontalAlignment','center');%表盘时刻标度end% 计算时针位置ti=clock;th=-(ti(4)+ti(5)/60+ti(6)/3600)/12*2*pi+pi/2;xh3=4.0*cos(th);yh3=4.0*sin(th);xh2=xh3/2+0.5*cos(th-pi/2);yh2=yh3/2+0.5*sin(th-pi/2);xh4=xh3/2-0.5*cos(th-pi/2);yh4=yh3/2-0.5*sin(th-pi/2);hh=fill([0 xh2 xh3 xh4 0],[0 yh2 yh3 yh4 0],[0.6 0.5 0.3]);% 计算分针位置tm=-(ti(5)+ti(6)/60)/60*2*pi+pi/2;xm3=6.0*cos(tm);ym3=6.0*sin(tm);xm2=xm3/2+0.5*cos(tm-pi/2);ym2=ym3/2+0.5*sin(tm-pi/2);xm4=xm3/2-0.5*cos(tm-pi/2);ym4=ym3/2-0.5*sin(tm-pi/2);hm=fill([0 xm2 xm3 xm4 0],[0 ym2 ym3 ym4 0],[0.6 0.5 0.3]);% 计算秒针位置ts=-(ti(6))/60*2*pi+pi/2;hs=plot([0 7*cos(ts)],[0 7*sin(ts)],'color','w','linewidth',2);set(gcf,'doublebuffer','on');while 1;ti=clock;%每次读取系统时间,并进行运算% 计算时针位置th=-(ti(4)+ti(5)/60+ti(6)/3600)/12*2*pi+pi/2;xh3=4.0*cos(th);yh3=4.0*sin(th);xh2=xh3/2+0.5*cos(th-pi/2);yh2=yh3/2+0.5*sin(th-pi/2);xh4=xh3/2-0.5*cos(th-pi/2);yh4=yh3/2-0.5*sin(th-pi/2);set(hh,'XData',[0 xh2 xh3 xh4 0],'YData',[0 yh2 yh3 yh4 0]) % 计算分针位置tm=-(ti(5)+ti(6)/60)/60*2*pi+pi/2;xm3=6.0*cos(tm);ym3=6.0*sin(tm);xm2=xm3/2+0.5*cos(tm-pi/2);ym2=ym3/2+0.5*sin(tm-pi/2);xm4=xm3/2-0.5*cos(tm-pi/2);ym4=ym3/2-0.5*sin(tm-pi/2);set(hm,'XData',[0 xm2 xm3 xm4 0],'YData',[0 ym2 ym3 ym4 0]) % 计算秒针位置ts=-(ti(6))/60*2*pi+pi/2;set(hs,'XData',[0 7*cos(ts)],'YData',[0 7*sin(ts)])drawnow;pause(0.09)endcatch returnend 时钟程序4:% function clock4h0 = figure('menubar', 'none', ... 'NumberTitle', 'off', ... 'position', [200 150 300 150], ... 'name', '简易时钟'); %创建窗口set(0, 'DefaultUicontrolBackgroundColor', get(h0, 'color')) %设置控件默认背景色set(0, 'DefaultUicontrolUnits', 'points') %设置控件默认字体单位set(0, 'DefaultUicontrolFontsize', 12) %设置控件默认字体大小now = floor(clock); %获取当前时刻e1 = uicontrol('parent', h0, ... %创建方框显示年份数据 'enable', 'inactive', ... 'BackgroundColor', 'w', ... 'style', 'edit', ... 'horizontal', 'right', ... 'position', [20 80 30 20], ... 'string', num2str(now(1)));t1 = uicontrol('parent', h0, ... %显示【年】 'style', 'text', ... 'string', '年', ... 'fontsize', 14, ... 'position', [55 80 20 20]);e2 = uicontrol('parent', h0, ... %创建方框显示月份数据 'enable', 'inactive', ... 'BackgroundColor', 'w', ... 'style', 'edit', ... 'horizontal', 'right', ... 'position', [80 80 30 20], ... 'string', num2str(now(2)));t2 = uicontrol('parent', h0, ... %显示【月】 'style', 'text', ... 'string', '月', ... 'fontsize', 14, ... 'position', [115 80 20 20]);e3 = uicontrol('parent', h0, ... %创建方框显示日份数据 'enable', 'inactive', ... 'BackgroundColor', 'w', ... 'style', 'edit', ... 'horizontal', 'right', ... 'position', [140 80 30 20], ... 'string', num2str(now(3)));t3 = uicontrol('parent', h0, ... %显示【日】 'units', 'points', ... 'tag', 't3', ... 'style', 'text', ... 'string', '日', ... 'fontsize', 14, ... 'position', [175 80 20 20]);e4 = uicontrol('parent', h0, ... %显示时、分、秒 'enable', 'inactive', ... 'BackgroundColor', 'w', ... 'style', 'edit', ... 'horizontal', 'right', ... 'position', [40 30 80 20], ... 'string', [num2str(now(4)) ':' num2str(now(5)) ':' num2str(now(6))]);b1=uicontrol('parent',h0,... %显示【关闭】按钮 'string','关闭',... 'position',[150 30 50 20],... 'callback',[... 'k=1;,',... 'close']);k=0; %循环标志while ishandle(h0) %获取时间,用于时间刷新 now1 = floor(clock); set(e1, 'string', num2str(now1(1))); set(e2, 'string', num2str(now1(2))); set(e3, 'string', num2str(now1(3))); set(e4, 'string', [num2str(now1(4)) ':' num2str(now1(5)) ':' num2str(now1(6))]); pause(1) %循环周期 if k == 1 %跳出循环 break endend 时钟程序5:% function clock5for j=1:30 %循环30秒后停止R=100;%设置背景圆的半径R=100axis([-100 100 -100 100]);%设定坐标轴cs=linspace(0,2*pi,100);A=linspace(0,6.3,1000); x1=cos(cs);y1=sin(cs);fill(R*x1,R*y1,'w');%填充背景色为白色hold on;axis('off');%隐藏坐标轴plot(R*x1,R*y1,'r','linewidth',2.0);%画外侧圆,R=100plot((R-10)*cos(A),(R-10)*sin(A),'r','linewidth',1.0)%画内侧圆,R=100-5=95axis('equal');%将圆变成正圆title('王玺的电子表');%添加自己的标题%画数字与刻度for i=1:60%循环变量控制,画60个刻度 if(mod(i,5)==0)%mod取余数,在整除5的时候刻度线长一些 l=R-10;%设置长刻度为10 else l=R-5;%设置短刻度为5 end %画从R到l的直线 R与l间隔越大线越长 %a=linspace(x1,x2,n)指从x1,x2建立一个n元素的向量并赋给a x=linspace(R*cos(-i*pi/30+pi/2),l*cos(-i*pi/30+pi/2),60); y=linspace(R*sin(-i*pi/30+pi/2),l*sin(-i*pi/30+pi/2),60); plot(x,y,'r');%将刻度颜色设为红色 %给表盘添加数字 if(mod(i,5)==0) s=fix(i/5);%fix 取小于当前的整数值 如fix(3.5)结果为3 s=num2str(s);%整数转化成字符串(text函数只可以显示字符串) if(i>30) r=3; end; r=-3; text(x(60)+r,y(60)+r,s,'fontsize',20,'color',[0 0 0]);%在刚才划线的最后一个点 (x(60),y(60))加上r的位置即(x(60)+r,y(60)+r)输出数字 endend%画指针sz=clock;%将clock赋给sz(时钟的首字母);clock 指调用当前系统时间;clock 为有六个元素的向量:%用clock(6)可显示当前秒钟数;用clock(5)可显示当前分钟数;用clock(4)可显示当前小时数;%用clock(3)可显示当前日数;用clock(2)可显示当前月数;用clock(1)可显示当前年数;%**************************************************************************%秒针参数设置 xs=linspace(0,(R-15)*cos(-sz(6)*pi/30+pi/2),60);%sz(6)*pi/30为以y轴为起始点 秒针移动的角度 ys=linspace(0,(R-15)*sin(-sz(6)*pi/30+pi/2),60);%(R-15)为秒针的长度;%分针参数设置 xm=linspace(0,(R-30)*cos(-(sz(5)+sz(6)/60)*pi/30+pi/2),60);%(R-30)为分针的长度;ym=linspace(0,(R-30)*sin(-(sz(5)+sz(6)/60)*pi/30+pi/2),60);%-(sz(5)+sz(6)/60)*pi/30+pi/2为以y轴为起始点 分针移动的角度 %时针参数设置 xh=linspace(0,(R-50)*cos(-(sz(4)+sz(5)/60+sz(6)/3600)*pi/6+pi/2),60);%(R-50)为时针的长度;yh=linspace(0,(R-50)*sin(-(sz(4)+sz(5)/60+sz(6)/3600)*pi/6+pi/2),60);%-(sz(4)+sz(5)/60+sz(6)/3600)*pi/6+pi/2为以y轴为起始点时针移动的角度 %画指针plot(xs,ys,'r','linewidth',1.0);%画出秒针plot(xm,ym,'y','linewidth',3.0);%画出分针plot(xh,yh,'g','linewidth',5.0);%画出时针fill(5*cos(A),5*sin(A),'g');%画出中心的小绿点%打出年月日%sz的各个值数字 要用text必须转化为字符串y=num2str(sz(1));%转换年m=num2str(sz(2));%转换月d=num2str(sz(3));%转换日str='';str=strcat(str,y);%strcat()为字符串衔接函数 将转化后的2008接出来str=strcat(str,'年');%将汉字“年”接到2008后str=strcat(str,m);%将当前月份显示出来str=strcat(str,'月');%将“月”接到**之后str=strcat(str,d);%将当前的日显示出来str=strcat(str,'日');%将“日”接到**后text(-22,-50,str)%显示年月日的坐标位置%打出时分str='';str=strcat(str,'WELCOME TO BEIJING');%书写欢迎辞text(-46,60,str);%欢迎辞的坐标位置str='';h=num2str(sz(4));%转换小时m=num2str(sz(5));%转换分钟str=strcat(str,h);%将当前小时显示出来str=strcat(str,'时');%将“时”接到**后str=strcat(str,m);%将当前分钟显示出来str=strcat(str,'分');%将“分”接到**后text(-15,-60,str);%显示当前时间的坐标位置hold off;%本时钟使用的是一秒画一个表,一秒之后擦掉上一个图形,并再画一个pause(0.5);%暂停0.5秒后画出下一张图,为了看到指针连续的走动,这个值越小越好!end。

下载提示
相关文档
正为您匹配相似的精品文档