大家。我有循环问题。它只执行一次而不是迭代。
我试图找出航天器的表面温度随时间的变化。辐射热流量取决于当前温度,因此回路中的下一个温度应取决于一秒钟前的温度。这不是整个剧本,但任何人都可以告诉我我的循环有什么问题吗?
谢谢!
% Starting with given surface and interior temperatures, find each new
% temperature with each heat flux every second through one orbit.
timeline = 1:1:time1;
Ts = zeros(size(timeline));
Ts(1) = 240; % initial surface temperature, Kelvins`
for n = 2:length(time1)
Ts(n) = (solarflux + IRs - (sigma*ems_mli*surfarea*(Ts(n-1)^4)))/(m*c) + Ts(n-1);
end
%% Plotting
figure(1)
plot(timeline,Ts)
xlabel('seconds');
ylabel('surface temperature (Kelvins)');
答案 0 :(得分:0)
我修正了一些错误:
n=2:length(time1)
应为n = 2:length(timeline)
,因为time1
是标量
我在zeros(size(timeline)
中使用了长度而不是大小,我添加了1作为输入,使其成为与时间轴大小相同的矢量。
以下是代码:
timeline = 1:1:time1; % your time array
Ts = zeros(1,length(timeline)); % preallocate memory for Ts
Ts(1) = 240; % initial surface temperature, Kelvins
for n = 2:length(timeline) % loop through 2 to end of timeline
Ts(n) = (solarflux + IRs - (sigma*ems_mli*surfarea*(Ts(n-1)^4)))/(m*c) + Ts(n-1);
end
绘制你的数字:
figure % create a figure
plot(timeline,Ts) % plot timeline vs Ts
xlabel('seconds'); % X-Axis label
ylabel('surface temperature (Kelvins)'); % Y-Axis label