【发布时间】:2020-02-02 12:16:59
【问题描述】:
我有一个可能很愚蠢的问题,但我无法克服它。
这一切的目的是让两个变量F_hor_alb和F_ver_alb根据if语句中报告的规则来定义。
如果该角度的余弦 (60wt) 在这种情况下大于等于 -0.37(阴影)的量,则这两个变量必须具有正弦趋势。否则它们的价值为零。
通过验证余弦和变量的输出,第一个是应该的,但变量的所有值都等于零,除了第一个,因此不遵循余弦本身假设的值。 IF 中有什么不工作的地方吗?
(Fhor 和 Fver 已经在另一段代码中定义)。
Example of output
Cos(60wt): 0,9980 0,9970 0,9960 .....
F_hor_alb: 0,9980*F_hor 0 0 0 0 0 0 0 0 0 0
F_ver_alb: 0,9980*F_ver 0 0 0 0 0 0 0 0
Re = 6378; % Radius of Earth (km)
z = 500; % Orbital Altitude (km)
mu = 3.986004415e5 % Gravitational constan of Earth (km3/s2)
OrbitalT = 2*pi*sqrt(((Re+z)^3)/mu); % Orbital Period (s)
orbits = 30; % Number of cycles for the simulation
simtime = (OrbitalT*orbits)/60; % Simulation time (min)
simstep = 1; % Sampling step (min)
w=2*pi/OrbitalT;
F_hor_alb = zeros(ceil(simtime));
F_ver_alb = zeros(ceil(simtime));
for t = 1:simstep:ceil(simtime)
if cos(w*t*60)>shadow
F_hor_alb = F_hor*cos(w*t*60);
F_ver_alb = F_ver*cos(w*t*60);
else
F_hor_alb = 0;
F_ver_alb = 0;
end
F_hor_alb(t) = F_hor_alb;
F_ver_alb(t) = F_ver_alb;
coseno(t)=cos(w*t*60);
t=t+1;
end
【问题讨论】:
-
如何定义shadow、F_hor和F_ver?
-
另外,我不确定你想在这些行中做什么:
F_hor_alb(t) = F_hor_alb; F_ver_alb(t) = F_ver_alb; coseno(t)=cos(w*t*60); t=t+1;t 应该在 for 循环中递增,没有必要告诉 Matlab 给 t 加一。 -
'F_hor_alb = zeros(ceil(simtime)); F_ver_alb = zeros(ceil(simtime));'您在这里期望什么大小的矩阵?如果你想要一个向量,你需要这样定义:'F_hor_alb = zeros(ceil(simtime),1); F_ver_alb = zeros(ceil(simtime),1);'
-
角度以弧度为单位,而不是函数
cos的度数。使用cosd表示度数。那 60 是可疑的 -
这段代码有很多问题,我所能做的就是建议你快速介绍一下MATLAB。如果你以正确的方式学习它,你的生活会轻松很多,而不是组装随机语法并询问它为什么不起作用。例如:matlabacademy.mathworks.com
标签: matlab for-loop if-statement trigonometry