Matlab中的递归循环不能迭代

时间:2016-08-03 03:18:43

标签: matlab

大家。我有循环问题。它只执行一次而不是迭代。

我试图找出航天器的表面温度随时间的变化。辐射热流量取决于当前温度,因此回路中的下一个温度应取决于一秒钟前的温度。这不是整个剧本,但任何人都可以告诉我我的循环有什么问题吗?

谢谢!

% 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)');

1 个答案:

答案 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