Problème de parcourt d'un vecteur

aisezmoi11 -  
 aisezmoi11 -
Bonjour,

bonjour,
j'ai deux vecteurs x et y et je cherche à construire un troixième vecteur d de sorte que les valeurs de d existe dans x et y et leurs positions dans d est la même que y et le reste vaut 0.
exemple : pour x(1)

Code :
x=[1 4 5 0 3 4 8 2 5 4 2]
y=[4 1 2 5 7 8 2 3 6 9 5 4 1 2 3 6 7 ]

d(1:length(y))=0;
for j=1:length(x)
for i=1:length(y)
if x(1)==y(i)
d(i)=y(i);
else
d(i)=0;
end
end
end
drésultat:

Code :
d =

Columns 1 through 12

0 1 0 0 0 0 0 0 0 0 0 0

Columns 13 through 17

1 0 0 0 0mais quand je fait la même chose pour tout x il me met juste les résultat pour x(end)=2.

voila mon code pour tout x :

Code :
x=[1 4 5 0 3 4 8 2 5 4 2]
y=[4 1 2 5 7 8 2 3 6 9 5 4 1 2 3 6 7 ]

d(1:length(y))=0;
for j=1:length(x)
for i=1:length(y)
if x(i)==y(i)
d(i)=y(i);
else
d(i)=0;
end
end
end
drésultat :

Code :
d =

Columns 1 through 12

0 0 2 0 0 0 2 0 0 0 0 0

Columns 13 through 17

0 2 0 0 0et moi ce que je veux c'est :

Code :
d= Columns 1 through 12

4 1 2 5 0 8 2 3 0 0 5 4

Columns 13 through 17

1 2 3 0 0comment faire ?
merci

1 réponse

boissonnfive
 
Bonjour,

je crois que c'est parce-que tu dois sortir de ta deuxième boucle si tu as une correspondance.
if x(i)=y(i)
d(i)=y(i)
break (ou l'instruction pour sortir de la boucle)
Comme tu ne sors pas, tu as la correspondance que sur la dernière valeur dans x, qui est 2. C'est pour
ça que tu n'as que des deux dans ton vecteur.

Petite question: c'est quel langage?

Bonne journée.
0
aisezmoi11
 
c'est matlab c'est bon j'ai trouver voila le script si quelqu'un aura besoin :


x=[1 4 5 0 3 4 8 2 5 4 2];
y=[4 1 2 5 7 8 2 3 6 9 5 4 1 2 3 6 7 ];
d=zeros(1,length(y));
length(y)
for i=1:length(y)
if(any(x==y(i)))
d(i)=y(i);
end
end
0