2011-02-15 114 views
0

我想制作一个映射坐标的程序。我无法让Matlab选择基于向量不等式的特定值。也许我做错了,但这里是我的代码,其中g是一个给出点的全球位置的向量。 EL是“对象”的长度,局部坐标是一维情况下“对象”上点的坐标。然后,重新评估这些局部坐标,以便在全局对象的长度上给出-1到1的值。 PL是全局对象的位置。Matlab选择基于矩阵值的值

%Get the local coordinates of the points 

for g=(gp(gp>0)) 
    for n1=(gp(gp<EL(1,1))) 
    gp1=[n1, 1]; 
    end; 
    for x=(gp(PL((x1-1),1)<gp<PL((x1),1))); 
    gp2=[(x-(EL(x1,1))),1]; 
    end 
    for x=(gp((PL(x1,1)<=gp))); 
    gp3=[((x)-(EL(x1,1))),1]; 
    end 
    lpap=([gp1,gp2,gp3]); 
    %use the local coordinates to get the natural coordinates 
    for x=(gp(gp<=EL(1,1))) 
    nc=[((lpap*2)/EL(1,1))-1,1]; 
    end 
    for x=(gp(PL(x1-1,1)<gp<PL(x1,1))); 
    nc1=[((lpap*2)/EL(x1,1))-1,1]; 
    end 
    for p=(gp(PL(x1,1)<=gp)); 
    nc2=[((lpap*2)/EL(x1,1))-1,1]; 
    end 
    nct=[nc,nc1,nc2] 

end 

除了NCT不是-1到1之间,我知道什么是错的,因为运行这给了我为X,P,N1的变量,这应该给多值一个恒定值。

回答

2

我不知道你想在这里做什么,我建议您阅读MATLAB对flow control文档,以获得如何在MATLAB程序,但只是为了让你开始一个更好的主意......

在过去的一个数组在MATLAB工作循环:

for n = 1:10 
    % do stuff 
end 

要选择基于价值的阵列的部分,你可以使用索引引用:

a = [1 2 3 4 5 6 7 8]; 
a_gt_four = a(a>4); % returns [5 6 7 8]; 
+0

好的,谢谢你帮助了很多。我已阅读matlab中的流量控制,我欣赏链接。我可以看到代码看起来很愚蠢,我只是尝试了很多其他的东西,而这正是我头脑中有意义的东西。这是第一次在MATLAB中编程。它现在可以工作,除了一部分。如果我无法弄清楚,我会重新发布新的代码。再次感谢 – user618204 2011-02-15 18:10:52