Existe algun comando???

tsk_juand
09 de Octubre del 2005
hola.
Soy bastante nuevo en esto, y tal vez sea una chorrada pero tengo una duda. Me explico.
Por ejemplo:
si tenemos el vector a=[1 2 3 4 5 6 7 8 9 10]
y otro b=[1 4]
quisiera obtener un vector c=[2 3 5 6 7 8 9 10]
me he vuelto loco haciendo bules y demas pero no lo consigo.
Gracias

Al
09 de Octubre del 2005
yo tmb soy novatillo, y esto es lo primero que se me ha ocurrido, seguro hay aluna forma mucho mas eficaz, pero tambien funciona para tu caso. y es facil de modificar si se cambian los parametros o se quieren eliminar mas numeros, ya que la estructura siempre es la misma.
disp(\'el vector inicial es: a\')
[x,j]=find(a==input(\'primer numero que qieres elimiar\'));
[x,l]=size(a);
b=[];
for i=1:l
if i~=j
b=[b a(1,i)];
end
end
[x,p]=find(b==input(\'segundo numero que qieres elimiar\'));
[x,l]=size(b);
c=[];
for i=1:l
if i~=p
c=[c b(1,i)];
end
end
c

tsk_juand
09 de Octubre del 2005
muchas gracias por vuestro tiempo
También he dado con otra forma:
a(b)=[]
que sencillo eh???!!!!!!!

tsk_juand
09 de Octubre del 2005
por si no se ve claro [] es matriz vacia: [ ]

lo necesitaba para hacer un programa que de como salida el orden de calculo y ciclos maximos dada una matriz de relación Booleana.
Si os interesa en terminarlo lo os lo paso

Al
09 de Octubre del 2005
Pues si que era simple, al principio lo habia probado con la posicion a(1,1) y a(1,4)=[] pero me dava un error, era mas simple, no poner la fila, supongo que pq es un vector entonces no hay que decirle la fila. pues eso que soy novatillo.

Respecto al programa que dices, pues sinceramente no sabria por donde empezar, pero sí me interesa, asi es como voy ha aprender.
mi direccion de correo es [email protected]

Es uno de los pocos foros de matlab que he encontrado. sabes si hay mas?
gracias.

Isabel
09 de Octubre del 2005
Es lo primero que se me ha ocurrido, pero se podria mejorar... Pero bueno, funciona :)

function c=elimina(a,b)

%a=[1 2 3 4 5 6 7 8 9 10];
%b=[1 4];
%c=[2 3 5 6 7 8 9 10];

tam_a=length(a);
tam_b=length(b);
tam_c=tam_a-tam_b;
c=zeros(1,tam_c);

i=1; % Para moverme por vector a
j=1; % Para moverme por vector b
k=1; % Para moverme por vector c
flag=0; % Mira si existe un termino concidente

for i=1:1:tam_a
for j=1:1:tam_b
if (a(i)==b(j))
flag=flag+1;
end
j=j+1;
end
if(flag==0)
c(k)=a(i);
k=k+1;
end
flag=0;
j=1;
i=i+1;
end