Matlab - duda vectores

 
Vista:

duda vectores

Publicado por edu (2 intervenciones) el 10/10/2009 14:24:22
Tengo un par de problemas de vectores, que seguramente sean fáciles de resolver, pero dada mi inexperiencia en el tema no logro sacar nada en claro.

primero: para passar un vector como este: x = [1 0 0 6 0 2] a uno de dimensión menor quitando los ceros (y=[1 6 2])¿ cómo lo haríais?

después, quiero crear n vectores aleatorios con n dinemnsiones diferentes, se crearlos pero todos tienen la misma variable asignada, he procdedido de esta manera:

for i=1:n
xi = rand(1,i)
end

¿dónde está el error?
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:duda vectores

Publicado por gustavo (1 intervención) el 10/10/2009 17:30:58
espero esto te sirva:

x=[1 0 0 6 0 2] %tu vector
y=find(x~=0)%funcion find localiza los indices del vector x que son diferentes de cero
x=x(y) %selecciona los valores del vector x que son diferentes de cero que nos indica %el vector y

puedes checar las funciones: find ,all ,any te pueden servir.

para el segundo problema:

no estoy muy seguro pero podrías hacer esto:

n=input('cual es el valor de n?');

y=cell(n,1);%creas el cell array
for i=1:n
y{i}= rand(1,i); %utilizas un cell array para guardar los vectores
end
celldisp(y); %muestras el contenido del cell array

y{1} =

0.5497



y{2} =

0.9172 0.2858

algo asi.

lo que te queda es un cell array..... con n dimensiones......

o puedes ....

crear un cell array de variables y relacionarlas con el cell array de vectores...solo que tus valores de n estarian limitados por el cell array de variables...

algo mas o menos asi............

n=input('cual es el valor de n?');
y=cell(n,1);%creas el cell array
b={'A= ','B= ','C= ','D= ','E= ','F= ','G= ','H= ','I= ','J= ','K= ','L= ','M= ','N=','O= ','P= ','Q= ','R= ','S= ','T= ','U= ','V= ','W= ','X= ','Y= ','Z= '};
for i=1:n
y{i}= rand(1,i); %utilizas un cell array para guardar los vectores
strcat(b{i},num2str(y{i}))
end


espero esto te sirva... no tengo mucho tiempo pero ..... hice mo que pude.....adios
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:duda vectores

Publicado por edu (2 intervenciones) el 10/10/2009 21:25:58
muchas gracias, todo lo que me has dicho me ha sido muy útil, pero me ha surgido otra duda, ¿cómo puede indicar la posición de una determinada componente? es decir, dado x = [ 6 2 3 4 5] quiero que me diga la posición de la componente menor, es decir la segunda. Gracias de antemano
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:duda vectores

Publicado por gustavo (44 intervenciones) el 10/10/2009 22:06:22
bueno es facil ... mira....
x = [ 6 2 3 4 5]
asi :

minimo=find(x==min(x))
maximo=find(x==max(x))

y listo.....
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar