Matlab动态时钟范例_第1页
Matlab动态时钟范例_第2页
Matlab动态时钟范例_第3页
Matlab动态时钟范例_第4页
Matlab动态时钟范例_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Matlab动态时钟范例一、主程序代码%将下列命令保存到M文件中,直接运行 %Matlab时钟动画演示%原版在%Anson Tsiar于2017-3-2去掉try循环,并显示中文日期(另写date_cn函数),增加数字显示(也将更新时间设为1s)%Anson Tsiar于2017-3-3更改表盘颜色,增加时钟短刻度,更改表盘绘制次序,并使秒针取整秒(舍小数)%增加符合中文习惯(函数实现)的数字时钟%为防止其他意外报错,重回try,2017-3-4(本版模拟时钟秒针一秒一秒地跳)%2017-3-8 设置背景为白色(老版本的matlab figure默认背景为灰色)try %close all c

2、lc; %hfig=figure('NumberTitle','off','name','Clock Animation Demo-matlabfan','MenuBar','none'); hfig=figure('NumberTitle','off','name','动态时钟','MenuBar','none'); set(gca,'position',0.13 0.05 0.775

3、0.815) set(gcf,'color','w') %设备背景颜色为白色 theta=linspace(0,6.3,1000); x1=7*cos(theta);y1=7*sin(theta); plot(x1,y1,'color',0.93 0.99 0.9,'linewidth',3); %绘制内表盘 hold on 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,. 

4、9;linewidth',2,. 'color',0.4 0.8 0.9); %长刻度 for l=1:4 xl=9*cos(-2*pi/12*k+pi/2-2*pi/60*l); yl=9*sin(-2*pi/12*k+pi/2-2*pi/60*l); plot(xl/9*8 xl/9*7.5,yl/9*8 yl/9*7.5,. 'color',0.3 0.8 0.9); %短刻度 end text(xk/9*6,yk/9*6,num2str(k),'fontsize',16,'color',0.9 0.3 0.8,.

5、'FontName','Times New Roman','HorizontalAlignment','center'); %表盘时刻标度 end axis equal x2=8*cos(theta);y2=8*sin(theta); plot(x2,y2,'color',0.5 0.5 0.5,'linewidth',4); %绘制外表盘 axis off axis(-10 10 -12 10) d_cn,w_cn=date_cn(); title(d_cn,'fontsize',

6、18,'FontName','Microsoft YaHei') txt1=text(0,9.5,w_cn,'fontsize',18,'FontName','Microsoft YaHei','HorizontalAlignment','center'); % 计算时针位置 ti=clock; td1=ti(1:3); th=-(ti(4)+ti(5)/60+ti(6)/3600)/12*2*pi+pi/2; xh3=4.0*cos(th); yh3=4.0*sin(th); xh

7、1=-0.1*xh3; yh1=-0.1*yh3; 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(xh1 xh2 xh3 xh4 xh1,yh1 yh2 yh3 yh4 yh1,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); xm1=-0.1*xm3; ym1=-0.1

8、*ym3; 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(xm1 xm2 xm3 xm4 xm1,ym1 ym2 ym3 ym4 ym1,0.8 0.4 0.1); % 计算秒针位置 ts=-(ti(6)/60*2*pi+pi/2; hs=plot(-1*cos(ts) 7*cos(ts),-1*sin(ts) 7*sin(ts),'color','r','lin

9、ewidth',2); set(gcf,'doublebuffer','on'); fill(0.4*cos(theta),0.4*sin(theta),'r'); %绘制指针转轴 rectangle('Position',-9,-11.6,18,3,'Curvature',0.4,. 'EdgeColor',0.1 0.1 0.1,'FaceColor',0.8 0.8 0.8,. 'LineWidth',2,'LineStyle','

10、;-'); %画数字时钟外框 %while 1; %此处原是1,死循环,关闭figure会报错退出 while ishandle(hfig) %现关闭窗口后ishandle(hfig)变成0,会直接退出循环 %更新日期和星期 ti=clock;%每次读取系统时间,并进行运算 td2=ti(1:3); if isequal(td1,td2) td1=td2; d_cn,w_cn=date_cn(); title(d_cn,'fontsize',18,'FontName','Microsoft YaHei') delete(txt1); tx

11、t1=text(0,9.5,w_cn,'fontsize',18,'FontName','Microsoft YaHei','HorizontalAlignment','center'); end ti(6)=floor(ti(6); %秒数取整(舍弃小数部分) %若不取整,只要刷新时间够快,则可认为秒钟是连续转动的 % 计算时针位置 th=-(ti(4)+ti(5)/60+ti(6)/3600)/12*2*pi+pi/2; xh3=4.0*cos(th); yh3=4.0*sin(th); xh1=-0.1*xh

12、3; yh1=-0.1*yh3; 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',xh1 xh2 xh3 xh4 xh1,'YData',yh1 yh2 yh3 yh4 yh1) % 计算分针位置 tm=-(ti(5)+ti(6)/60)/60*2*pi+pi/2; xm3=6.0*cos(tm); ym3=6.0*sin(tm); xm1=-0.1*xm3;

13、 ym1=-0.1*ym3; 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',xm1 xm2 xm3 xm4 xm1,'YData',ym1 ym2 ym3 ym4 ym1) % 计算秒针位置 ts=-(ti(6)/60*2*pi+pi/2; set(hs,'XData',-1*cos(ts) 7*cos(ts),'YData'

14、,-1*sin(ts) 7*sin(ts) t_cn=time_cn(ti(4),ti(5),ti(6); txt2=text(0,-10,t_cn,. 'fontsize',18,'FontName','Microsoft YaHei',. 'HorizontalAlignment','center'); %显示数字时间 tie=clock; drawnow; pause(0.01); delete(txt2) endcatch returnend二、函数代码为实现日期(含星期)和时间的中文显示,上述主程序代码中

15、使用两个自定义函数:date_cn和time_cn。1)date_cn函数function d_cn,w_cn=date_cn()%本函数将当前日期转化为中文输出%格式:d_cn=XXXX年XX月XX日 (XX为阿拉伯数字)% w_cn=星期几(几为日、中文一到六)n=now; %若只求日期不求星期,则可 n=date;yy=year(n);y=strcat(num2str(yy),'年');mm=month(n);m=strcat(num2str(mm),'月');dd=day(n);d=strcat(num2str(dd),'日');d_cn

16、=strcat(y,m,d);%可一步到位:%d_cn=strcat(num2str(year(n),'年',num2str(month(n),'月',num2str(day(n),'日');ww=weekday(n)-1;%英文从星期日开始,第一天为1;中文从星期一开始,则星期日可记为0。table = '0','日' '1','一' '2','二' '3','三' '4','四' &#

17、39;5','五' '6','六'%weekIndex=find(strcmp(table,num2str(ww);weekIndex= strcmp(table,num2str(ww);w_cn=('星期',tableweekIndex,2);2)time_cn函数function t_cn=time_cn(h,m,s)%本函数输入二十四小时制的时间,输入符合中文习惯的时间。if h<0 | h>24 | m<0 |m>=60 | s<0 |s>=60 error('错误的时间

18、格式,请确保输入时间为为二十四小时制的时间!'); return;endtable = '0','深夜' '1','深夜' '2','深夜' '3','凌晨' '4','凌晨' '5','凌晨' '6','早上' '7','早上' '8','早上' '9','上午' &#

19、39;10','上午' '11','上午' '12','中午' '13','下午' '14','下午' '15','下午' '16','下午' '17','下午' '18','傍晚' '19','晚上' '20','晚上' '21','晚上' '22','晚上' '23','晚上' '24','深夜'timeIndex=strcmp(table,num2str(h);timescope=char(table(timeIndex,2);if h>12 h=h-12;elseif

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论