【问题标题】:For loop for a time step in MatlabMatlab中时间步长的for循环
【发布时间】:2018-02-22 22:50:02
【问题描述】:

我试图在我的代码中通过我的 tspan 运行一个 forloop,以便某些参数随时间变化(特别是每个季节)。

这是我目前在该部分代码中的内容:

Tmax = 7300; %years times days
tspan = 0:1:Tmax; %tspan from day 1 to Tmax
Mu = [500 1500 500 0]; %vectors for each function of t, with values per season starting with spring
Day = zeros(Tmax,1);
count = 1;
for t = 1:Tmax
    S = floor(mod(t,365)/(366/4))+1; %Denotes the season
    Day(t) = Mu(S);
end

但是,我不断收到错误消息“未定义的函数或变量 S”。有什么见解吗?

【问题讨论】:

  • 你确定这段代码重现了你的错误吗?
  • 尝试在出现错误的地方设置一个断点,然后查看 t(和 S)的值。

标签: matlab for-loop tspan


【解决方案1】:

这看起来不错,对我有用。没有错误。我建议这样做:

clear all

然后再试一次。运行后,如果我绘制 Day,我会得到以下信息:

这是使用以下行创建的:

【讨论】:

  • 非常感谢您的帮助。它现在给了我错误“下标索引必须是真正的正整数或逻辑。”符合 Day(t) = Mu(S)。但是当我调用 Mu(S) 时,它返回正确的值,而 Day(t) 给出了同样的错误。所以我认为它并没有按照我想要的方式运行时间步,但我不确定如何解决这个问题。非常感谢您的帮助!
  • @SaraGagnon 我重复了代码,它也适用于我。检查并查看您在 MATLAB 中的代码是否与您在此处发布的代码完全相同。变量t 是一个整数,从 1 递增 1 到 7300,因此没有索引错误的原因。而S 始终是大于等于 1 的整数。
  • 我同意 TJ1。也许你正在运行另一段搞砸了的代码。
猜你喜欢
  • 2012-10-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多