MATLAB社区

MATLAB,社区等

黄昏的消息

在新英格兰,白天越来越短,越来越沉闷,我渴望阳光。这让我有点痴迷于太阳什么时候下山。但不像我们的祖先,我不需要担心太阳永远不会回来。我有一些他们没有的东西:MATLAB。为了应对白天变短,我可以准确地计算出白天开始变长的时间。对我来说,12月10日白天将开始变长。
你可能知道最短的一天是12月21日。但是最早的日落是在12月10日(在我的纬度)。因为我从来不会在黎明前醒来,所以到12月11日,我所经历的一天已经变长了。这是一个微妙的观点,但它帮助我度过了暮年(我曾经写过这种现象之前).
使用弗朗索瓦·博杜塞尔的《日出》在文件交换上的贡献,我可以很容易地绘制出我居住的地方(北纬42度)的日落时间。
地点:马萨诸塞州纳蒂克。
Lat = 42.3;
Lon = -71.4;
时间:今年。
列出一年中所有的日子
D = datetime(202,1,1:365);
% SUNRISE使用DATENUM格式
[~, sset_datenum] =日出(纬度,经度,0 []datenum (d));
(sset_datenum,ConvertFrom= .“datenum”);
T =小时(sset) +分钟(sset)/60 +秒(sset)/3600;
情节(d, t,线宽= 3)
网格
盒子
ylim (20 [15])
ylabel (《日落时分》
[~,ix] = min(t);
线(sset (ix)、t (ix),...
标志=“o”...
MarkerSize = 15,...
线宽= 2,...
颜色=“红色”
文本(sset (ix)、t (ix),...
sprintf (“最早的日落\n%s”sset (ix)),...
颜色=“红色”...
VerticalAlignment =“底”...
HorizontalAlignment =“正确”
setTimeYTick (gca)
注意,所有时间都是标准时间。我们不用担心任何关于日光节约时间的废话。我喜欢把日落最早的一天叫做Crepusculus(源自拉丁语crepusculum,意为黄昏)。这是一个重要的里程碑,所以它值得一个名字!
让我们使用相同的数据,并使用它来动画日落时间使用时钟的表面。这里我们看到日落时分的时针。你可以看到这里有点不对称。白天变短的速度快于变长的速度。
animate_clock_solstice.gif
对于这个动画,我使用了文件交换贡献我自己叫Animator
现在让我们画出几个北纬地区从最晚日落到最早日落的跨度。
clf
持有
latList = 0:10:50;
crepusculusTimes = 0 (size(latList));
crepusculusDates = NaT(size(latList));
colorMap = flipud(parula(10));
n = 1:length(latList)
D = datetime(202,1,1:365);
lat = latList(n);
Lon = -71;
[~,sset] = sunrise_dt(lat,lon,d);
T =小时(sset)+分钟(sset)/60+秒(sset)/3600;
[~, ixearly] = min(t);
[~,ixLatest] = max(t);
sset = sset(ixLatest: ix最早);
crepusculusTimes(n) = t(ixearly);
crepusculusDates(n) = d(ixearly);
情节(d, t,线宽= 3,颜色= colorMap (n,:))
网格
持有
盒子
结束
传奇(string (latList +“度”),位置=“东南”
标题(“不同北纬地区的日落时间”
ylabel (《日落时分》
setTimeYTick (gca)
持有
不出所料,离赤道越远,白天的长度变化就越大。
传说
集(findobj (gcf“类型”“行”),线宽= 1)
h= line(crepusculusDates,crepusculusTimes,LineWidth=2,Color=“红色”标志=“o”);
传奇(h,“Crepusculus”位置=“东南”
标题(“最早日落的日期随纬度而异”
暮光取决于你所在的纬度!越靠近赤道,最早的日落时间就越早。
再一次,让我们把这些信息显示在时钟的表面上。这一次,我们将不做动画,而是做一个静态的钟面,其中时针的颜色取决于一年中的月份。
D = datetime(202,6:214);
Lat = 42.3;
Lon = -71.4;
[~,sset] = sunrise_dt(lat,lon,d);
T =小时(sset)+分钟(sset)/60+秒(sset)/3600;
[~, ixearly] = min(t);
[~,ixLatest] = max(t);
d = d(ixLatest: ix最早);
t = t(ixLatest: ix最早);
sset = sset(ixLatest: ix最早);
clf
drawClockFace
gammaHr = pi/2 - 2*pi*mod(t,12)/12;
% colorMap = prism(7);
colorMap = get(gca,“ColorOrder”);
colorIxList = [1 1 1 1 1 1 2 3 4 5 6 7];
monthList = [“1月”“2月”“3”“4月”“可能”“君”“7”“8月”“9”“10月”“11月”“12月”];
monthList = monthList(唯一的(月(d)));
H = 0 (12,1);
nMonths =长度(唯一的(月(d)));
R = 0.8;
i = 1:长度(gammaHr)
colorIx = colorIxList(月(d(i)));
% colorIx = colorIxList(i);
color = colorMap(colorIx,:);
h (colorIx) =线([0 r * cos (gammaHr(我)],[0 r * sin (gammaHr(我))),...
颜色=颜色,...
线宽= 2);
结束
R = 1.1;
x = r*cos(gammaHr(1));
y = r*sin(gammaHr(1));
line([0 x],[0 y],Color=0.5*[1 1 1])
sset。格式=“dd-MMM HH: mm”;
文本(x, y, sprintf (“最晚日落\n%s”字符串(sset (1))),...
Color=0.5*[1 1 1],...
VerticalAlignment =“顶级”...
HorizontalAlignment =“正确”
x = r*cos(gammaHr(end));
y = r*sin(gammaHr(end));
line([0 x],[0 y],Color=0.5*[1 1 1])
sset。格式=“dd-MMM HH: mm”;
文本(x, y, sprintf (“最早的日落\n %s”字符串(sset(结束))),...
Color=0.5*[1 1 1],...
VerticalAlignment =“顶级”...
HorizontalAlignment =“左”
平等的
monthList = [“1月”“2月”“3”“4月”“可能”“君”“7”“8月”“9”“10月”“11月”“12月”];
monthList = monthList(唯一的(月(d)));
H (H ==0) = [];
传奇(h, monthList...
位置=“NortheastOutside”
这张图显示了大约半年的时间,从6月最晚的日落到12月最早的日落。
最后,这是一个日落可视化的动画,上面显示了它随着纬度的变化。再一次,我们看到赤道日的长度变化不大。
animate_clock.gif
你更喜欢哪一种:热带地区稳定的白昼长度,还是以短暂的冬日为代价的漫长夏日?
函数setTimeYTick (ax)
H = hours(get(ax,“YTick”)小时(12);
h.Format =“hh: mm”;
hStr = replace(string(h), textBoundary+“0”"") +“点”;
集(gca, YTickLabels = hStr,...
YDir =“反向”
结束
|
  • 打印
  • 发送电子邮件

评论

如欲留言,请点击在这里登录您的MathWorks帐户或创建一个新帐户。