【天文】基于Matlab模拟太阳位置跟踪和日行迹现象

简介: 【天文】基于Matlab模拟太阳位置跟踪和日行迹现象

 ✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。

🍎个人主页:Matlab科研工作室

🍊个人信条:格物致知。

更多Matlab仿真内容点击👇

智能优化算法  神经网络预测雷达通信 无线传感器

信号处理图像处理路径规划元胞自动机无人机

⛄ 内容介绍

由于地球的倾斜和围绕太阳的轨道的偏心率,太阳在天空中的轨迹取决于一年中的时间和观测的纬度。 “analemma”是由地球轨道与太阳的偏心率和倾斜引起的现象。如果您设置相机并在一年中每隔 24 小时拍摄一次太阳照片,天空中就会出现一个“无限大”的符号。八字形表示“表观太阳时”(正午 = 太阳直接在头顶)与“平均太阳时”(时钟计算 24 小时天)之间的差异。

⛄ 部分代码

function [azimuthAngle,elevationAngle] = sunPosition(dayOfYear, ...

   timeHour,latitude)

% Copyright 2016 The MathWorks, Inc.

% Make sure time vector is oriented properly

if size(timeHour,1) == 1 && size(timeHour,2) > 1

   timeHour = timeHour';

end

% Make sure day vector is oriented properly

if size(dayOfYear,2) == 1 && size(dayOfYear,1) > 1

   dayOfYear = dayOfYear';

end

% Account for Multiple Days

numTime = numel(timeHour);

numDays = numel(dayOfYear);

timeHour = repmat(timeHour,1,numDays);

% Shift solar noon for longitude

longitudeShift = 0;

% Equation of Time - East/West timeshift associated with elliptical orbit

equationTime = 9.87*sind(2*360/365*(dayOfYear-81)) - ...

   7.53*cosd(360/365*(dayOfYear-81)) - ...

   1.5*sind(360/365*(dayOfYear-81));

solarTimeCorrection = equationTime/60 + longitudeShift/15;

solarTime = timeHour + repmat(solarTimeCorrection,numTime,1);

% Angle of Sun - Related to Solar time (0 deg - vertical sun)

hourAngle = 180*(12-solarTime)/12;

% Sun Declination - varies from +/- 23.45 during year

sunDeclinationAngle = 23.45*sind(360/365*(dayOfYear-81));

% Solar Zenith Angle Calculations

cosineZenith = bsxfun(@plus,sind(latitude)*sind(sunDeclinationAngle),...

   cosd(latitude)*bsxfun(@times,cosd(sunDeclinationAngle),cosd(hourAngle)));

zenithAngle = acosd(cosineZenith);

elevationAngle = 90 - zenithAngle;

% sunUp = elevationAngle > 0;

% Solar Azimuth Angle Calculations

eastVertical = bsxfun(@times,cosd(sunDeclinationAngle),sind(hourAngle));

southVertical = bsxfun(@plus,-sind(sunDeclinationAngle)*cosd(latitude), ...

   bsxfun(@times,cosd(sunDeclinationAngle),sind(latitude)*cosd(hourAngle)));

posAngle = eastVertical > 0;

azimuthAngle = zeros(numTime,numDays);

azimuthAngle(posAngle) = acosd(-southVertical(posAngle)./ ...

   sqrt(eastVertical(posAngle).^2 + southVertical(posAngle).^2));

azimuthAngle(~posAngle) = 180 + acosd(southVertical(~posAngle)./ ...

   sqrt(eastVertical(~posAngle).^2+southVertical(~posAngle).^2));

azimuthAngle = -azimuthAngle;

end

⛄ 运行结果

image.gif编辑

⛄ 参考文献

❤️ 关注我领取海量matlab电子书和数学建模资料

❤️部分理论引用网络文献,若有侵权联系博主删除


相关文章
|
机器学习/深度学习 传感器 算法
基于Matlab模拟 AWGN 中16-QAM 的 OFDM 并计算 BER附完整代码
基于Matlab模拟 AWGN 中16-QAM 的 OFDM 并计算 BER附完整代码
|
机器学习/深度学习 传感器 算法
基于Matlab模拟偶极子天线设计
基于Matlab模拟偶极子天线设计
|
机器学习/深度学习 传感器 算法
基于Matlab模拟莱斯平坦衰落信道上数字信号传输的仿真
基于Matlab模拟莱斯平坦衰落信道上数字信号传输的仿真
|
机器学习/深度学习 传感器 算法
基于Matlab模拟3维偶极子天线
基于Matlab模拟3维偶极子天线
|
机器学习/深度学习 传感器 算法
基于Matlab模拟线性天线阵列方向图附完整代码
基于Matlab模拟线性天线阵列方向图附完整代码
|
机器学习/深度学习 传感器 算法
基于Matlab模拟Alamouti 编码附代码
基于Matlab模拟Alamouti 编码附代码
|
机器学习/深度学习 传感器 算法
基于matlab模拟OFDM中SNR和BER的关系附完整代码
基于matlab模拟OFDM中SNR和BER的关系附完整代码
|
机器学习/深度学习 传感器 算法
基于Alamouti 空间时间分组编码模拟瑞利衰落信道 BPSK 调制并计算误码率附matlab完整代码
基于Alamouti 空间时间分组编码模拟瑞利衰落信道 BPSK 调制并计算误码率附matlab完整代码
|
机器学习/深度学习 传感器 算法
【物理应用】基于Matlab模拟13自由度摩托车模型
【物理应用】基于Matlab模拟13自由度摩托车模型
|
传感器 机器学习/深度学习 算法
【雷达】基于Matlab模拟海洋监视雷达检测仿真
【雷达】基于Matlab模拟海洋监视雷达检测仿真