【问题标题】:matlab for loop hangmatlab for 循环挂起
【发布时间】:2013-01-20 01:27:12
【问题描述】:

我正在为 for 循环进行模拟和代码

例如

IntervalInterArrivalTime = [2 3 4 5] //user input 
CDF = [250 500 750 1000] // this is the probability but multiply 1000 to alculate the range
randInterArrival = [991 351 754 823] // this is pc random generated number so each time wwill be different 

lengthCDF = length(CDF); // length of the CDF which in this case is =4
period = 0;

我想做的 for 循环是程序将使用 CDF 和 IntervalArrivalTime 检查 randInterArrival 的范围。例如:

如果 randInterArrival >0 并且

否则,如果 randInterArrival > CDF(1) 和

否则,如果 randInterArrival > CDF(2) 和

否则,如果 randInterArrival > CDF(3) 和

for i=1:lengthCDF
if randInterArrival(i)>0 && randInterArrival(i)< CDF(i)
 period=IntervalInterArrivalTime(i)
else if randInterArrival(i)> CDF(i) % how to continued to write the statement out so that i can loop through all the items in the CDF and check which IntervalInterArrival() it is

% i stop here and dunno how to continued to loop through the CDF and check
end
end

希望大家能帮忙。提前致谢

【问题讨论】:

  • 首先,您的 if 语句很时髦。见这里mathworks.com/help/matlab/ref/if.html。您要么需要使用 elseif,要么使用 else 并以 else 结尾。你还需要结束你的 for 循环。如果你不想让你的代码挂起,就把套索拿走。
  • 我知道我没有结束文件,因为 for 循环还没有完成。我尝试了几种方法来执行 for 循环,但仍然失败。可以举一个类似的例子,这样我就可以让 for 循环循环并检查 CDF 吗?提前致谢
  • 为什么不发布实际代码,因为“else if randInterArrival(i)> CDF(i) && ?? // i hang here ..” 看起来不像合法的 matlab 代码。我认为如果您发布原始代码,人们将能够更好地帮助您。
  • 我的实际代码中包含很多无花果自动化代码。所以我只取出一部分。我想问的是如何将 randInterArrival(i) 项目与 CDF 项目进行比较。
  • 伙计们,这是一个混乱。不是 MATLAB 挂在这里,而是 @Eric 在“他被卡住了”。

标签: matlab for-loop logic


【解决方案1】:

可以按照您提议的方式执行此操作,分别检查每个条件。但是,当您增加要检查的元素/条件的数量时,这会变得非常笨拙。更好的方法是利用 find 函数并重新考虑你正在尝试做的事情的逻辑:

目标是什么?目标是确定大于randInterArrival(i) 的最小CDF 值的索引。请按如下方式执行:

index = find(CDF > randInterArrival(i), 1, 'first');

瞧!不需要if 声明。使用此索引获取期间:

period = IntervalInterArrivalTime(index);

【讨论】:

  • 感谢@tmpearce 使用这种方法我不需要使用非常混乱的 if 语句。非常感谢.. :)
【解决方案2】:

你需要end你的陈述:

for i=1:lengthCDF
if randInterArrival(i)>0 && randInterArrival(i)< CDF(i)
 period=IntervalInterArrivalTime(i)
else if randInterArrival(i)> CDF(i) && ?? // i hang here .. 
end
end

【讨论】:

  • 我知道我需要结束语句.. 但是 for 循环还没有完成运行,我不知道如何继续 for 循环。你知道怎么做吗???
  • 您是在命令行中输入此代码吗?如果是这样,你为什么不把它写到一个 .m 文件中。
  • 我正在将其写入 .m 文件。我不知道的是for循环。如何循环它以便我可以检查 CDF 中的所有变量
猜你喜欢
  • 1970-01-01
  • 2014-02-08
  • 1970-01-01
  • 1970-01-01
  • 2021-10-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多