【问题标题】:Smarter way to index loops in Matlab在 Matlab 中索引循环的更智能方法
【发布时间】:2016-05-21 12:18:48
【问题描述】:

我写了一个函数(称之为 F),它工作“很好”(即给了我想要的结果),在它里面我调用了完全相同的函数(称之为 G_i)四次(在其中一个下面),除了每次我改变索引循环的方式,以便能够覆盖矩阵中的所有系数对。我认为这种方法很差,我想知道您是否有改进的想法......

我这样做是为了检查矩阵系数的顺序条件(有时按 (1,2) 然后 (1,3) 然后 (2,3) 的顺序。我继续以不同的顺序检查)。

function G_1=countbackward(a,,,)
n=a;
G_1=[];


N=1;
while N>0    
for l=n:-1:1 
    for m=1:l

        if some condition on generated matrices
        ...

        elseif  another condition on generated matrices
        ...

        else
            N=0 ;
        end
        G_1=[G_1,g_0] ; 
    end 

end

结束

(对于 n=3,我得到上面的条目:(3,1),(3,2),(2,1)。)

我使用的其他索引与上述函数的主体完全相同:

for l=n:-1:1 
    for m=(l-1):-1:1

以下内容相同:

for l=1:n 
    for m=l+1:n

以下内容相同:

for l=1:n 
    for m=n:-1:l

感谢您的帮助。

附录:

以下是我的代码的简化示例:

function H=count2backward(a,g_0,s,e)
%matrix g_0 is the "start" matrix
%matrix g_K is the "end" matrix

n=a; % number of nodes in an undirected graph or size A
s=mypayoff(n,g_0);
e=mypayoff(n,g_K);

H=[];


N=1;
while N>0    
for l=1:n 
    for m=n:-1:l

        if l~=m && g_0(l,m)==0 && s(l)<=e(l) && s(m)<=e(m) && (s(l)<e(l)  || s(m)<e(m) ) ; 
           g_0(l,m)=g_0(l,m)+1 ;
           g_0(m,l)=g_0(m,l)+1 ;
           g_0 ;

           s=mypayoff(n,g_0);

        elseif    l~=m && g_0(l,m)==1 && (s(l)<e(l)  || s(m)<e(m) ) ;
           g_0(l,m)=g_0(l,m)-1 ;
           g_0(m,l)=g_0(m,l)-1 ;
           g_0 ;

           s=mypayoff(n,g_0);

        else
            N=0;

        end
        H=[H,g_0]    ; 
    end  

end

结束

【问题讨论】:

  • 谢谢,我可以给出完整的代码,但即使在我的条件下,我也会调用我编写的其他函数。@transversalitycondition
  • 重点是尝试构建一个简单的示例来说明抽象点,以便您的问题对其他成员有价值。您在问题上付出的努力越多,您在回答中所期望的努力就越多:)
  • @transversalitycondition 感谢您的建议,我刚刚编辑了帖子。

标签: matlab loops indexing


【解决方案1】:

您可以生成索引并将它们作为参数传递。这让您可以抽象决定如何循环到另一个函数中。

indexes = countbackwardpattern(a);
G_1=g_i(a, indexes);

【讨论】:

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