2011-02-15 3 views
0

J'essaie de créer un programme qui mappe des coordonnées. J'ai du mal à faire en sorte que Matlab sélectionne des valeurs spécifiques basées sur l'inégalité vectorielle. Peut-être que je le fais mal, mais voici mon code, où g est un vecteur donnant les emplacements globaux des points. EL est la longueur des "objets" et les coordonnées locales sont les coordonnées des points sur les "objets" pour un cas 1-D. Ensuite, ces coordonnées locales sont réévaluées pour donner une valeur de -1 à 1 sur la longueur de l'objet global. PL est l'emplacement des objets globalement.Matlab sélectionnant des valeurs basées sur des valeurs de matrice

%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 

En plus NCT ne pas être -1 à 1 Je sais que quelque chose ne va pas en cours d'exécution parce que cela me donne une valeur constante pour les x, p, variables n1, qui devrait donner des valeurs multiples.

Répondre

2

Je ne suis pas sûr de ce que vous essayez de faire ici, et je vous suggère de lire la documentation sur MATLAB® flow control pour avoir une meilleure idée de la façon de programmer en Matlab, mais juste pour vous aider à démarrer ...

Pour des boucles dans le travail Matlab sur un tableau:

for n = 1:10 
    % do stuff 
end 

Pour sélectionner des parties d'un tableau en fonction de la valeur, vous pouvez utiliser le référencement d'index:

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

Ok, merci qui a aidé beaucoup. J'ai lu le contrôle de flux dans matlab et j'apprécie le lien. Je peux voir à quel point le code avait l'air idiot, j'avais juste essayé tant d'autres choses et c'était ce qui avait du sens dans ma tête. C'est la première fois que je programme en matlab. Cela fonctionne maintenant sauf pour une partie. Si je ne peux pas comprendre cela, je vais rediffuser le nouveau code. Merci encore – user618204

Questions connexes