【问题标题】:Matlab : Save index in loopMatlab:在循环中保存索引
【发布时间】:2014-04-16 15:29:49
【问题描述】:

假设我有

Data = 160 x 160 double

我会这样做:

    %1st loop
    for e=3:160
        D1(e)=Data(1,e);
    end
    %2nd loop
    for e=6:160
        for b=2:e-1
          D2(e)= min(Data(b,e)+D1(1,b-1));
        end
    end

问题是,我想保存Data(b,e)D1(1,b-1) 索引,它为每次D2(e) 迭代提供最小值。 有什么帮助吗?谢谢。

【问题讨论】:

  • 我不确定我是否正确理解了您的代码。在我看来,在每次循环迭代中,Data(b,e)D1(1,b-1) 都是标量值,您可以将其取为 min。所以min(Data(b,e)+D1(1,b-1)) 等于Data(b,e)+D1(1,b-1)(?)还是我在某处遗漏了一个范围?
  • 即。对于 e = 6,我想比较 (Data(2,6)+D1(1)), (Data(3,6)+D1(2)), (Data(4,6)+D1(3)) , 和 (Data(2,5)+D1(4)) 所以我可以从这些数据中获取最小值(标量)并将其保存在 D2 变量中。我做错什么了吗?告诉我,谢谢。

标签: arrays matlab matrix indexing


【解决方案1】:

这行得通吗? -

%1st loop
for e=3:8
    D1(e)=Data(1,e);
end
%2nd loop
for e=6:8
    var1 = NaN(e-2,1);
    for b=2:e-1
        var1(b-1) = Data(b,e)+D1(1,b-1);
    end
    [D2(e),Index(e)] = min(var1);
end

%%// Outputs - D2, Index

【讨论】:

    猜你喜欢
    • 2016-06-01
    • 2013-12-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多