Hey,大家又是好久不见,这篇推送本来应该在元旦前的几天发出来的,但是临近元旦比较忙而且突然感冒,就往后拖了拖,好在还是在元旦当天赶完推送,元旦前感冒好的差不多了也算是除旧迎新了,这篇文章既是元旦祝福,也是一篇趣味小代码分享,同时也算是年终总结,首先来看趣味代码部分,效果大概这样:
祝大家元旦快乐!!!新的一年里除旧迎新,身体健康,步步高升,心想事成,事事顺意!!!
趣味代码
完整代码如下:
function happyNewYear(STR)
if nargin<1
STR={'2025','元旦快乐','身体健康','步步高升','心想事成','事事顺意'};
end
disp('正在加载新年祝福...')
% 循环构建文段矩阵
STRMX{length(STR)}=[];
STRMY{length(STR)}=[];
STRLN(length(STR))=0;
for i=1:length(STR)
disp(['已加载:',num2str(i),'/',num2str(length(STR))])
string=STR{i};
CaptionMat=zeros(25*length(string),25);
for j=1:length(string)
CaptionMat(25*(j-1)+1:25*j,:)=getWordMatrix(string(j));
end
[XMesh,YMesh]=find(CaptionMat~=0);
sizeSTRM=size(CaptionMat);
STRMX{i}=(XMesh-sizeSTRM(1)/2)./12.5;
STRMY{i}=(YMesh-sizeSTRM(2)/2)./12.5;
STRLN(i)=length(XMesh);
end
disp('新年祝福加载完毕...')
fig=figure('units','normalized', 'position',[.1,.1,.5,.8],...
'UserData',[0,55,17,42,31,44,34,31,48,35,48]);
axes('parent',fig, 'NextPlot','add', 'Color',[0,0,0],...
'DataAspectRatio',[1,1,1], 'XLim',[-100,100], 'YLim',[0,200], 'Position',[0,0,1,1]);
[XMesh, YMesh] = meshgrid(linspace(-1, 1, 80));
YMesh = YMesh.*linspace(5,1,80); XMesh = XMesh.*linspace(5,1,80).';
XY = [XMesh(:), YMesh(:)]*[cos(pi/4), sin(pi/4); - sin(pi/4), cos(pi/4)];
XMesh = XY(:,1); YMesh = XY(:,2); XMesh(YMesh < 0) = []; YMesh(YMesh < 0) = [];
CMesh = 1 - (YMesh(:) - min(YMesh(:)))./(max(YMesh(:)) - min(YMesh(:))).*2;
scatter(XMesh(:).*50, YMesh(:).*50, 10, 'filled', 'CData', repmat(CMesh, 1, 3))
OX = (rand(max(STRLN), 1) - .5).*200;
OY = rand(max(STRLN), 1).*130 + 70;
OS = 5.*ones(max(STRLN), 1);
OC = .1.*ones(max(STRLN), 3);
txtHdl = scatter(OX, OY, 'filled', 'CData',OC, 'SizeData',OS);
for i = 1:length(STRLN)*10
n = mod(i - 1, length(STRLN)) + 1;
NX = [STRMX{n}.*20; (rand(max(STRLN) - STRLN(n), 1) - .5).*200];
NY = [STRMY{n}.*20 + 130; rand(max(STRLN) - STRLN(n), 1).*130 + 70];
NS = [20.*ones(STRLN(n), 1); 5.*ones(max(STRLN) - STRLN(n), 1)];
NC = [.8.*ones(STRLN(n), 3); .1.*ones(max(STRLN) - STRLN(n), 3)];
for j = 1:50
txtHdl.XData = OX + j.*(NX - OX)./50;
txtHdl.YData = OY + j.*(NY - OY)./50;
txtHdl.SizeData = OS + j.*(NS - OS)./50;
txtHdl.CData = OC + j.*(NC - OC)./50;
pause(.02); drawnow();
end
pause(1)
OX = NX; OY = NY; OS = NS; OC = NC;
NX = (rand(max(STRLN), 1) - .5).*200;
NY = rand(max(STRLN), 1).*130 + 70;
NS = 5.*ones(max(STRLN), 1);
NC = .1.*ones(max(STRLN), 3);
for j = 1:50
txtHdl.XData = OX + j.*(NX - OX)./50;
txtHdl.YData = OY + j.*(NY - OY)./50;
txtHdl.SizeData = OS + j.*(NS - OS)./50;
txtHdl.CData = OC + j.*(NC - OC)./50;
pause(.02); drawnow();
end
OX = NX; OY = NY; OS = NS; OC = NC;
end
%% ========================================================================
% 文字矩阵生成函数
function wordMatrix=getWordMatrix(CHAR)
% Copyright (c) 2023, Zhaoxu Liu / slandarer
figGWM=figure('units','pixels','position',[20 20 160 160],...
'Numbertitle','off','Color',[1 1 1],'resize','off',...
'visible','off','menubar','none');
axGWM=axes('Units','pixels','parent',figGWM,'Color',[1 1 1],...
'Position',[0 0 160 160],'XLim',[0 16],'YLim',[0 16],...
'XColor',[1 1 1],'YColor',[1 1 1],'NextPlot','add');
text(axGWM,8,8.5,CHAR,'HorizontalAlignment','center','FontSize',120)
saveas(figGWM,['.\',CHAR,'.png']);pic=imread(['.\',CHAR,'.png']);
delete(['.\',CHAR,'.png']);delete(axGWM);set(figGWM,'Visible','on');close all
[rowMax,colMax,~]=size(pic);
picData=pic(:,:,1)<125;
wordMatrix=zeros(25,25);
% 统计每个像素内点数确定黑色还是白色
for ii=1:25
rowLim=round([ii-1,ii]./25.*rowMax);
rowLim(rowLim==0)=1;
for jj=1:25
colLim=round([jj-1,jj]./25.*colMax);
colLim(colLim==0)=1;
wordMatrix(ii,jj)=sum(sum(picData(rowLim(1):rowLim(2),colLim(1):colLim(2))));
end
end
wordMatrix(wordMatrix<10)=0;
wordMatrix=wordMatrix';
wordMatrix=wordMatrix(:,end:-1:1);
end
end
年终总结
以下是关于MATLAB的本账号的年终总结:
众所周不知,去年年初拿到了MATHWORKS官方举办的迷你黑客大赛的奖品,虽然和很多大佬有很大差距但还是基本上拿满了奖品:
专家评选前三名,以及投票榜前十:~
每周的阶段性获奖者:
获得的奖品:
竞赛中的代码被官方提到:
发布的技巧和趣味代码被官方提到:
发布推文入选每周必读并获得第二个杯子:
发布的工具登上MATLAB社区首页:
fileexchange月下载量过千排名进前20:
受邀在MATLAB社区分享技巧,技巧被MATLAB官方团队传阅,并希望安排访谈:
在无人发现的角落偷偷进行了官方采访,采访发布在Mathworks官网及MATLAB公众号:
https://blogs.mathworks.com/community/2024/05/06/community-qa-zhaoxu-liu/ https://mp.weixin.qq.com/s/LKrnT8MxXCVfI6sX_aAnLA
官网上发布了一些下载量过千或者近千的资源(预计今年中旬会有资源下载量过万):
2024年这几篇推文阅读量较高
弦图绘制挑战
MATLAB绘图速查表
MATLAB 及 python 玫瑰
粒子玫瑰
环形柱状图
怎么用 MATLAB 优雅的推公式
R2024b 新版本更新内容
R2024a 新版本更新内容
新的开始
总而言之,闲话少叙,新的一年我们一起继续快乐MATLAB呀!祝大家元旦快乐,事事顺意!!