【问题标题】:While loop inside for loop in MatlabMatlab中for循环内部的while循环
【发布时间】:2013-09-10 21:53:37
【问题描述】:

我正在尝试在 Matlab 的 for 循环中使用 while 循环。 while 循环将重复相同的操作,直到满足某些条件。 while 循环的结果是 for 循环中的一次迭代。我无法正确获取它。

n=100;
for i=1:n
    while b<0.5
        x(i)=rand;
        b=x(i);
    end
end

我不确定我做错了什么。 谢谢

【问题讨论】:

  • 代码有什么问题?究竟是什么问题?
  • 在第一次调用while-statement 之前你可能需要初始化b
  • 我试图初始化 b 但这不起作用。我正在尝试获取大小(1x100)所有值都大于0.5的x值向量。 x 值是随机生成的。

标签: matlab for-loop while-loop


【解决方案1】:

以不同的方式解决问题。如果rand 没有为您提供所需的价值,则无需再试一次。只需将rand 的结果缩放到您想要的范围内。应该这样做:

x = 0.5 + 0.5*rand(1, 100);

【讨论】:

  • 我喜欢你的方法,但是 Schorsch 的方法更适合我的问题。
  • @LindaRabady 为什么它更相关?请添加更多详细信息,以便以后可以正确回答。如果您使用循环重新生成随机数以强制它在特定范围内,那么您最初的方法可能是错误的。
  • @EitanT 也许rand 只是一个例子,问题实际上是关于如何设置语句以便可以在第一次调用while-语句时对其进行评估。但这只是猜测。
  • @Schorsch 因此我恳求更多细节:)
  • 谢谢大家,抱歉回复晚了。是的,兰特只是一个例子,但这个想法非常好。我可以在其他地方使用它。
【解决方案2】:

对于您展示的示例,您必须初始化b,否则while-statement 在首次调用时无法评估。
for-loop 中执行此操作,以避免在第一次for-iteration 之后出现误报:

n=100;
for ii=1:n
    b = 0;
    while b<0.5
        x(ii)=rand;
        b=x(ii);
    end
end

或者,没有b

n=100;
x = zeros(1,100);
for ii=1:n
    while x(ii)<0.5
        x(ii)=rand;
    end
end

【讨论】:

    猜你喜欢
    • 2021-06-29
    • 2019-11-10
    • 2018-11-05
    • 2014-05-19
    • 2013-06-07
    • 2014-03-22
    • 1970-01-01
    • 2020-05-15
    相关资源
    最近更新 更多