【问题标题】:How to initiate for loop to run for a number of iteration in MATLAB如何启动 for 循环以在 MATLAB 中运行多次迭代
【发布时间】:2015-05-09 08:03:31
【问题描述】:

再次为一天中的多个愚蠢问题感到抱歉。我是新手,不太懂编程。我在here问了一个关于for循环的简单问题,已经整理出来了:

How to divide two different array in for loop matlab

我需要在多次迭代(比如 10 000)内启动这个 for 循环,以获得输出,其中 result (1:15)./result (16:30)每次迭代都会不同。这意味着,对于每次迭代,结果(u)都会变化。而且我还需要在每次迭代时输出 resultX(u)(位置)

我已经用 for 循环试过了。但它不断给我每次迭代的相同结果。我也不怎么矢量化这个,这是最糟糕的。拜托,我需要这方面的帮助。

从 cmets 获取的其他信息

我需要一个矩阵输出(row = iteration, column=u)

我希望每次迭代都有u 值的变化,这就是为什么我每次都提示下面的代码

u:acx = rand();
newacx = round(acx*100); 
if (newacx < 10 || newacx == 10)
    [valueone,positionone] = randomFunction(a); 
elseif (newacx > 10) 
    [valueone,positionone] = max(start(1,:));
end

【问题讨论】:

  • 我认为这是一个很容易回答的问题,如果你能提供一个你正在尝试做的最小例子。确保包括输入变量(即使它只是它们的大小/尺寸,如果你不能适应实际数据),以及你希望输出的样子。
  • 嗨,@jedwards。我需要一个矩阵输出 (row = iteration, column=u) 。我想要每次迭代的 u 值的变化,这就是为什么我提示下面的代码为每个 u ---> (acx = rand(); newacx = round(acx*100);) 然后条件 if else (if (newacx &lt; 10 || newacx == 10), [valueone,positionone] = randomFunction(a); elseif (newacx &gt; 10), [valueone,positionone] = max(start(1,:)); end)。我希望这能解释你的问题

标签: matlab for-loop nested vectorization


【解决方案1】:

怎么样

NUM_ITER = 10000;
out = zeros(NUM_ITER, 15);

for iter = 1:NUM_ITER
    start=zeros(2,15);
    a=[-12 10 -5 3 21 19 3 7 17 21];

    for u = 1:30  
        acx = rand();
        newacx = round(acx*100);

        if (newacx < 10 || newacx == 10)
           [valueone,positionone] = randomFunction(a); 
        elseif (newacx > 10)
           [valueone,positionone] = max(start(1,:));
        end

        result(u) = valueone;
        resultX(u)= positionone;
    end

    u = result(1:15)./result(16:30);

    out(iter,:) = u;
end

out         % Results of running NUM_ITER times
out(1,:)    % Results of first iteration
out(2,:)    % Results of second iteration

注意我真的不知道你在这个脚本中做了什么,但如果我正确理解你的问题,out 应该有你要找的东西——它是一个矩阵大小 (NUM_ITER x 15),其中每一行包含该迭代的 u 的值。

【讨论】:

  • 这行得通!谢谢@jedwards。这么晚才回复很抱歉。我正在测试代码。
猜你喜欢
  • 2021-07-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-24
  • 1970-01-01
  • 2013-12-14
  • 2015-08-19
相关资源
最近更新 更多