MATLAB社区

MATLAB、社区和更多

黄昏的消息

当白天变短,花费在新英格兰,我渴望阳光。这让我有点沉迷于当太阳集。但与我们古老的祖先不同,我不需要担心,太阳永远不会返回。我有他们没有的东西:MATLAB。应对缩短的日子里,我可以计算什么时候白天开始变长了。对我来说,12月10日白天开始变长了。
你可能知道,最短的一天是12月21日。但是最早的日落是12月10日(在我的纬度)。因为我从来没有在黎明前醒来,然后一天我经历已经越来越长在12月11日。这是一个微妙的一点,但它帮助我度过最后一年的《暮光之城》(我写这一现象之前)。
使用弗朗索瓦Beauducel文件交换的“日出”贡献,我可以很容易地做一个阴谋的日落时间我住的地方(北纬42度)。
%的地方:马萨诸塞州纳。
lat = 42.3;
朗= -71.4;
%的时候:今年。
%列出所有的日子
d = datetime (2022、1、1:365);
%日出使用DATENUM格式
[~,sset_datenum] =日出(纬度,经度,0 []datenum (d));
sset = datetime (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
这个动画,我使用一个文件交换的贡献我自己的动画师
现在让我们画出跨数北纬度最早从最新到日落。
clf
持有
latList = 0:10:50;
crepusculusTimes = 0(大小(latList));
crepusculusDates = NaT(大小(latList));
colorMap = flipud (parula (10));
n = 1:长度(latList)
d = datetime (2022、1、1:365);
lat = latList (n);
朗= -71;
[~,sset] = sunrise_dt(纬度,经度,d);
t =小时(sset) +分钟(sset) / 60 +第二(sset) / 3600;
[~,ixEarliest] = min (t);
[~,ixLatest] = max (t);
sset = sset (ixLatest: ixEarliest);
crepusculusTimes t (n) = (ixEarliest);
crepusculusDates (n) = d (ixEarliest);
情节(d, t,线宽= 3,颜色= colorMap (n,:))
网格
持有
盒子
结束
传奇(string (latList +“度”),位置=“东南”)
标题(“北方日落时间在不同纬度”)
ylabel (“日落的时间”)
setTimeYTick (gca)
持有
正如预期的那样,一天的长度变化明显当你远离赤道。
传说
集(findobj (gcf“类型”,“行”),线宽= 1)
h =线(crepusculusDates crepusculusTimes,线宽= 2,颜色=“红色”标志=“o”);
传奇(h,“Crepusculus”位置=“东南”)
标题(“最早的日落随纬度的日期”)
Crepusculus取决于你的自由!最早的日落倾斜在今年早些时候当你接近赤道。
再一次,让我们显示一些信息从表面上一个时钟。这一次,而不是动画,我们会做一个静态的钟面,时针的颜色取决于今年月。
d = datetime (2022、6、1:214);
lat = 42.3;
朗= -71.4;
[~,sset] = sunrise_dt(纬度,经度,d);
t =小时(sset) +分钟(sset) / 60 +第二(sset) / 3600;
[~,ixEarliest] = min (t);
[~,ixLatest] = max (t);
d = d (ixLatest: ixEarliest);
t = t (ixLatest: ixEarliest);
sset = sset (ixLatest: ixEarliest);
clf
drawClockFace
gammaHr =π/ 2 - 2 *π*国防部(t, 12) / 12;
% colorMap =棱镜(7);
colorMap =得到(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)));
1 h = 0(12日);
nMonths =长度(独特的(月(d)));
r = 0.8;
i = 1:长度(gammaHr)
colorIx = colorIxList(月(d (i)));
% colorIx = colorIxList(我);
颜色= 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));
行(0 x, y][0,颜色= 0.5 * (1 1 1))
sset。格式=“dd-MMM HH: mm”;
文本(x, y, sprintf (“最新日落\ n % s”字符串(sset (1))),
颜色= 0.5 * (1 1 1),
VerticalAlignment =“顶级”,
HorizontalAlignment =“正确”)
x = r * cos (gammaHr(结束));
y = r * sin (gammaHr(结束));
行(0 x, y][0,颜色= 0.5 * (1 1 1))
sset。格式=“dd-MMM HH: mm”;
文本(x, y, sprintf (“最早的日落\ n % s”字符串(sset(结束))),
颜色= 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 =小时(get (ax,“YTick”)小时(12);
h。格式=“hh: mm”;
hStr =取代(字符串(h), textBoundary +“0”,”“)+“点”;
集(gca, YTickLabels = hStr,
YDir =“反向”)
结束
|
  • 打印

评论

留下你的评论,请点击在这里MathWorks账户登录或创建一个新的。