Matlab繪制有趣的羅盤(pán)時(shí)鐘的示例代碼
一期趣味編程哈,如何使用MATLAB繪制羅盤(pán)時(shí)鐘:
繪制效果


完整代碼
function compassClock
% @author : slandarer
CCList='零一二三四五六七八九十';
WDList='一二三四五六日';
TBList='子丑寅卯辰巳午未申酉戌亥';
timeNow=datetime('now');
dayNumber=weekday(timeNow);
dayNumber=mod(dayNumber-2,7)+1;
timeMat=[timeNow.Year,timeNow.Month,timeNow.Day,dayNumber,...
ceil((mod(timeNow.Hour+1,24)+1)/2),timeNow.Hour,timeNow.Minute,round(timeNow.Second)];
timeMat(6:8)=timeMat(6:8)+1;
lastTimeMat=timeMat;
% 計(jì)算獲取年月日char矩陣
yearList=[CCList(str2num(num2str(timeMat(1))')'+1),'年'];
numList=char(32.*ones(60,3));
for i=0:60
tNum=CCList(str2num(num2str(i)')'+1);
if length(tNum)>1,tNum=[tNum(1),'十',tNum(2)];end
if length(tNum)>1&&abs(tNum(end))==38646,tNum(end)=[];end
if length(tNum)>1&&abs(tNum(1))==19968,tNum(1)=[];end
numList(i+1,end-length(tNum)+1:end)=tNum;
end
monthList=[numList(2:13,:),char(ones(12,1).*26376)];
dayList=[numList(2:32,:),char(ones(31,1).*26085)];
weekList=[char(ones(7,1).*26143),char(ones(7,1).*26399),WDList'];
tbList=[TBList',char(ones(12,1).*26102)];
hourList=[numList(1:24,:),char(ones(24,1).*26102)];
minuteList=[numList(1:60,:),char(ones(60,1).*20998)];
secondList=[numList(1:60,:),char(ones(60,1).*31186)];
% 創(chuàng)建figure窗口及axes坐標(biāo)區(qū)域
fig=figure('Units','normalized','Position',[.2,.05,.55,.82],'Color',[2,34,57]./255);
ax=axes('Parent',fig);hold on;
set(ax,'Position',[0,0,1,1],'PlotBoxAspectRatio',[1,1,1],'XLim',[-1,1].*1.17,'YLim',[-1,1].*1.17,...
'XColor','none','YColor','none','Color',[2,34,57]./255);
% 繪制鐘表handle
listCell={yearList,monthList,dayList,weekList,tbList,hourList,minuteList,secondList};
numCell={1,12,31,7,12,24,60,60};
RCell={0,.22,.39,.53,.64,.78,.96,1.15};
for k=1:8
tList=listCell{k};
for i=1:numCell{k}
tTheta=2*pi/numCell{k}*(i-1);tNum=mod(i-1+timeMat(k)-1,numCell{k})+1;
hdlSet{k,i}=text(ax,cos(tTheta).*RCell{k},sin(tTheta).*RCell{k},tList(tNum,:),'FontName','黑體',...
'Color',[1,1,1],'FontSize',10,'HorizontalAlignment','right','Rotation',tTheta/pi*180);
end
end
set(hdlSet{1,1},'HorizontalAlignment','center')
fill(ax,[-.1,1.17,1.17,-.1],[-1,-1,1,1].*.025,[0,0,0],'FaceAlpha',0,'EdgeColor',[1,1,1],'LineWidth',1.2)
% 循環(huán)繪圖
while true
timeNow=datetime('now');
dayNumber=weekday(timeNow);
dayNumber=mod(dayNumber-2,7)+1;
timeMat=[timeNow.Year,timeNow.Month,timeNow.Day,dayNumber,...
ceil((mod(timeNow.Hour+1,24)+1)/2),timeNow.Hour,timeNow.Minute,round(timeNow.Second)];
timeMat(6:8)=timeMat(6:8)+1;
K=find(lastTimeMat~=timeMat);
if ~isempty(K)
for k=K
tList=listCell{k};
for i=1:numCell{k}
tNum=mod(i-1+timeMat(k)-1,numCell{k})+1;
set(hdlSet{k,i},'String',tList(tNum,:))
end
end
end
lastTimeMat=timeMat;
drawnow;
end
end
到此這篇關(guān)于Matlab繪制有趣的羅盤(pán)時(shí)鐘的示例代碼的文章就介紹到這了,更多相關(guān)Matlab繪制羅盤(pán)時(shí)鐘內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C語(yǔ)言中常見(jiàn)的六種動(dòng)態(tài)內(nèi)存錯(cuò)誤總結(jié)
學(xué)習(xí)過(guò)C語(yǔ)言中的動(dòng)態(tài)內(nèi)存函數(shù),例如【malloc】、【calloc】、【realloc】、【free】,那它們?cè)谑褂玫倪^(guò)程中會(huì)碰到哪些問(wèn)題呢,本本文我們一起來(lái)探討下,感興趣的朋友跟著小編一起來(lái)看看吧2023-11-11
C語(yǔ)言中單鏈表(不帶頭結(jié)點(diǎn))基本操作的實(shí)現(xiàn)詳解
鏈表是一種物理存儲(chǔ)結(jié)構(gòu)上非連續(xù)、非順序的存儲(chǔ)結(jié)構(gòu),數(shù)據(jù)元素的邏輯順序是通過(guò)鏈表中的指針鏈接次序?qū)崿F(xiàn)的。本文主要和大家聊聊C語(yǔ)言中單鏈表(不帶頭結(jié)點(diǎn))的基本操作,感興趣的小伙伴可以了解一下2022-11-11
C語(yǔ)言編程中分配內(nèi)存空間的相關(guān)函數(shù)
這篇文章主要介紹了C語(yǔ)言編程中分配內(nèi)存空間的相關(guān)函數(shù),分別是malloc()函數(shù)和calloc()函數(shù),需要的朋友可以參考下2015-08-08
QT實(shí)現(xiàn)簡(jiǎn)單計(jì)算器功能
這篇文章主要為大家詳細(xì)介紹了QT實(shí)現(xiàn)簡(jiǎn)單計(jì)算器功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-04-04
C語(yǔ)言進(jìn)階教程之字符函數(shù)&字符串函數(shù)
C語(yǔ)言提供了豐富的字符串處理函數(shù),可以對(duì)字符串進(jìn)行輸入、輸出、合并、修改、比較、轉(zhuǎn)換、復(fù)制、搜索等操作,下面這篇文章主要給大家介紹了關(guān)于C語(yǔ)言進(jìn)階教程之字符函數(shù)&字符串函數(shù)的相關(guān)資料,需要的朋友可以參考下2022-03-03
C++實(shí)現(xiàn)LeetCode(768.可排序的最大塊數(shù)之二)
這篇文章主要介紹了C++實(shí)現(xiàn)LeetCode(768.可排序的最大塊數(shù)之二),本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下2021-07-07

