Matlab - Asignar una iteracion progresiva a una variable

 
Vista:

Asignar una iteracion progresiva a una variable

Publicado por Daniel (8 intervenciones) el 13/02/2010 15:51:36
Hola necesito su ayuda Urgente, estoy programando en matlab, y estoy usando "For", tengo esto:

for n=1: x % siendo "x" un numero que previamente se pide y ya se ha ingresado,

T= [ cos(n) sin(n) D H] ;

% Aqui el problema, NECESITO, que por cada iteracion de "n" (1,2,3,4..etc), a la variable "T "se le asigne algo como T1(para la iteracion n=1), T2(para la iteracion n=1) y asi sucesivamente, osea algo como un subindice para "T", o algo que diferencie a "T" para acada iteracion de n, para posteriormente llamar a "los T1, T2 T3 etc", Pues asi como esta planteado, para cada iteracion "n" siempre me dara la variable "T"....y eso no Quiero.
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:Asignar una iteracion progresiva a una variable

Publicado por Jorge (226 intervenciones) el 14/02/2010 01:46:02
Si ya tienes cos(n) y sin(n), por qué no haces T(n)?

T(n) = [ cos(n) sin(n) D H] ;
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:Asignar una iteracion progresiva a una variable

Publicado por daniel (8 intervenciones) el 15/02/2010 04:29:15
Porque cos(n) es un ejemplo, en si es: T(n)= [ cos (y) sen(x) d z]....siendo n= la iteracion Nª1 luego para 2 y 3, 4,5.....del for..... y T(n)= & es igual a una matriz que tiene hasta 4 variables%...me dejo entnder?
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:Asignar una iteracion progresiva a una variable

Publicado por Jorge (226 intervenciones) el 16/02/2010 01:57:00
OK. Considera esto:

t(1,:) = [1 2 3 4];
t(2,:) = [5 6 7 8];

Puedes acceder a los valores así
t(1,:)
t(2,:)

Y eso ya lo puedes poner en una iteración.

for n = 1 : ...
t(n,:) = ...
end
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:Asignar una iteracion progresiva a una variable

Publicado por daniel (8 intervenciones) el 17/02/2010 07:40:19
Hola jorgue, muchisimas gracias por tu apoyo que me esta sirviendo de mucho, me vas a perdonar mi ignorancia, creo que yo no me he dejado entender muy bien, pense reducir mi problema para que me entiendan mejor pero creo que me equivoque.. en realidad tengo esto:

En un curso de robotica me han pedido que haga el Algoritmo de Lagrange -Euler en un programa desarrollado en Matlab, y llego a este puento donde tengo:

% INGRESAR LOS GRADOS DE LIBERTAD DE UN ROBOT CUALQUIERA osea 1,2,3,4.......etc%

x=input('cuantos grados de libertad tiene el robot?');

% A CONTINUACION TENGO 4 VARIALES: "Tita", "D", "A", "Angulo". Por ejemplo, si arriba los grados de libertad del robot fueran 3, abajo me pediria y tendria que ingresar un "Tita1",un D1", "A1" y "Angulo1".... y tambien "Tita2",un D2", "A2" y "Angulo2" y tambien "Tita3",un D3", "A3" y "Angulo3.... y asi sucesivamente dependiendo de los grados de libertad osea de "x"...entonces yo lo hice asi: %
----------------------------------------------------------------------------------------------------------------
for n=1:x;
Tita(n)=input('Ingrese Parametro Tita=');
D(n)=input('Ingrese Parametro "d"=');
A(n)=input('Ingrese Parametro "a"=');
Angulo(n)=input('Ingrese Parametro "angulo"=');

end
---------------------------------------------------------------------------------------------------------------
% Eso que he puesto arriba en el for si me funciona pero cuando me muestra en pantalla siempre me muestra: Tita=, D=, A=, Angulo= (para todos los "n" y lo que quisiera es que automaticamente para por ejemplo n=1, me mostrara Tita1, D1 ...etc para: n=2, Tita2, D2, A2 etc... y asi susecivamente..( yo le he puesto a cada variable un "(n)" pensando que asi lo solucionaria pero nada) ademas quisiera que donde me pide: 'Ingrese Parametro Tita=" ..... me diga 'Ingrese Parametro Tita1= y asi sucesivamente dependiendo de cuanto es el v alor ingresado para"X" %

% Luego abajo tengo una matriz de 4x4 en donde uso las 4 variables de arriba osea: "Tita", "D", "A", "Angulo".... aqui mi gran problema,

lo que quisiera es que para cada iteracion del for( n=1,2,3,4,5...hasta "x") Se le asocie una matriz prefenida, por ejemplo para el for n=1: me MUESTRE Y CALCULE: T1= [cos(Tita1) -cos(Angulo1)*sin(Tita1) sin(Angulo1)*sin(Tita1) A1 *cos(Tita1);...etc ...para el for n=2: ........T2= [cos(Tita2) -cos(Angulo2)*sin(Tita2) sin(Angulo2)*sin(Tita2) A2 *cos(Tita2);...etc ... Yo lo hice como esta a continuacion pero no me funciono%

----------------------------------------------------------------------------------------------------------------
for n=1:x,
T(n)=[cos(Tita(n)) -cos(Angulo(n))*sin(Tita(n)) sin(Angulo(n))*sin(Tita(n)) A(n) *cos(Tita(n));...

sin(Tita(n)) cos(Angulo(n))*cos(Tita(n)) -sin(Angulo(n))*cos(Tita(n)) A(n)*sin(Tita (n));...

0 sin(Angulo(n)) cos(Angulo(n)) D(n);...

0 0 0 1];

disp(T(n));

end
---------------------------------------------------------------------------------------------------------------- Porfavor si me pudieras ayudar te estaria muy agradecido, saludos desde PERU
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:Asignar una iteracion progresiva a una variable

Publicado por Jorge (226 intervenciones) el 17/02/2010 20:08:12
OK. Esta es una posibilidad:

i = 4;
str1 = ['Ingresa parámetro Tita' num2str(i) ': '];
T(i) = input(str1);
str2 = ['Ingresa parámetro d' num2str(i) ': '];
D(i) = input(str1);

Esto te va a desplegar
Ingresa parámetro Tita4:
Ingresa paametro D4:

Los números que ingreses quedarán en T(4) y D(4). Esto es con la intención de que los puedas poner en las iteraciones correspondientes.

Con esto ya tienes indicadores en el letrero que pide al usuario, y vas formando las matrices de manera ordenada.

La instrucción num2str( ) cambia números a strings, de tal manera que los puedes incluir en los inputs. Hay un comando inverso, str2num( ).

Saludos,
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:Asignar una iteracion progresiva a una variable

Publicado por daniel (1 intervención) el 17/02/2010 20:50:48
amigo, parece que voy por buen camino gracias a ti, he hecho lo que me has sugerido pero creo que hay un error de sintaxis, porq me arroja este error:

?? ámetro Tita'num2str
|
Improper function reference. A "," or ")" is expected.

Error in ==> C:\MATLABR11\work\jorgue.m
On line 5 ==> str1=input('Ingresa parámetro Tita'num2str(x) ': ');
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:Asignar una iteracion progresiva a una variable

Publicado por Jorge (226 intervenciones) el 17/02/2010 21:12:55
Primero prepara el str1 y lúego úsalo dentro de input. Es más fácil.
No lo pongas directamente en input.

Yo puse esto

str1 = ['Ingresa parámetro Tita' num2str(i) ': '];
T(i) = input(str1);

que funciona.

Tú pusiste esto

str1=input('Ingresa parámetro Tita'num2str(x) ': ');

que no funciona, efectivamente, pero no es lo mismo.
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:Asignar una iteracion progresiva a una variable

Publicado por danilo720 (8 intervenciones) el 17/02/2010 21:20:33
Muchas Gracias!!!! tienes razon.... hice como tu dijistes y me funcionó, ahora voy a meter todo eso en un for y luego hare la segunda parte que tiene que ver con la matriz...disculpa las molestias jorgue, es muy aliviante y gratificante cuando te brindan ayuda desinteresadamente...espero que no te molestes si te sigo preguntando si tengo dudas...gracias
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:Asignar una iteracion progresiva a una variable

Publicado por Daniel (8 intervenciones) el 18/02/2010 07:02:44
Hola jorgue, disculpa las molestias, pero como hago si tengo esta matriz de 4x4;
---------------------------------------------------------------------------------------------------------------------------
T= [cos(Tita(n)) -cos(Alpha(n))*sin(Tita(n)) sin(Alpha(n))*sin(Tita(n)) a(n)*cos(Tita(n));...
sin(Tita(n)) cos(Alpha(n))*cos(Tita(n)) -sin(Alpha(n))*cos(Tita(n)) a(n)*sin(Tita(n));...
0 sin(Alpha(n)) cos(Alpha(n)) D(n);...
0 0 0 1];
---------------------------------------------------------------------------------------------------------------------------
Si miras la matriz, nuevamente se va usar las variables: "Tita" , "a" , "d", "Alpha" que ya las definimos antes con tu ayuda..

Y lo que deseo es que esa matriz vaya dentro de un for n=1:x
por ejemplo:
cuando n=1: automaticamente se le asigne un T1 y resuelva esa matriz.
cuando n=2: automaticamente se le asigne un T2 y resuelva esa matriz....etc

yo lo hecho asi:
--------------------------------------------------------------------------------------------------------------------------
for n=1:x
T=eye(4);
T=[cos(Tita(n)) -cos(Alpha(n))*sin(Tita(n)) sin(Alpha(n))*sin(Tita(n)) a(n)*cos(Tita(n));...
sin(Tita(n)) cos(Alpha(n))*cos(Tita(n)) -sin(Alpha(n))*cos(Tita(n)) a(n)*sin(Tita(n));...
0 sin(Alpha(n)) cos(Alpha(n)) D(n);...
0 0 0 1];
disp(T)
end
--------------------------------------------------------------------------------------------------------------------------- Como ves arriba, si me funciona pero siempre me dara como respuesta "T" y yo deseo que se le asigne T1 ,T2, T3, ....etc para despues llamarlas...Como hago? amigo
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:Asignar una iteracion progresiva a una variable

Publicado por Jorge (226 intervenciones) el 18/02/2010 07:32:07
En lugar de asignar a T, asigna a T(n, :, :), y así tendrás una matriz de matrices.
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:Asignar una iteracion progresiva a una variable

Publicado por Daniel (8 intervenciones) el 18/02/2010 07:47:12
:-) lo Hice asi:

for n=1:x

T(n, :, :)=[cos(Tita(n)) -cos(Alpha(n))*sin(Tita(n)) sin(Alpha(n))*sin(Tita(n)) a(n)*cos(Tita(n));...
sin(Tita(n)) cos(Alpha(n))*cos(Tita(n)) -sin(Alpha(n))*cos(Tita(n)) a(n)*sin(Tita(n));...
0 sin(Alpha(n)) cos(Alpha(n)) D(n);...
0 0 0 1];

disp(T(n, :, :))


end

y me muestra algo asi como( ingrese para un n=2):

(:,:,1) =

0.5403 0.8415 0 0

(:,:,2) =

-0.4546 0.2919 0.8415 0

(:,:,3) =

0.7081 -0.4546 0.5403 0

(:,:,4) =

0.5403 0.8415 1.0000 1.0000

(:,:,1) =

-0.4161 0.9093 0 0

(:,:,2) =

0.3784 0.1732 0.9093 0

(:,:,3) =

0.8268 0.3784 -0.4161 0

(:,:,4) =

-0.8323 1.8186 2.0000 1.0000

Brother te mencione que recien estoy aprendiendo Matlab jejeje.....que significa esa respuesta de arriba???...
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:Asignar una iteracion progresiva a una variable

Publicado por Jorge (226 intervenciones) el 18/02/2010 23:15:09
Son los valores de la matriz que estás formando.

Si quieres ver cada matriz, usa
T(1,:,:) <-- significa: matriz 1, todos los renglones y todas las columnas
T(2,:,:) <-- matriz 2, todos los renglones y todas las columnas

T(3,2,4) <-- matriz 3, renglón 2, columna 4
...

en lugar de usar disp(T(n,:,:))
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:Asignar una iteracion progresiva a una variable

Publicado por alonso herrera (1 intervención) el 13/04/2010 15:40:04
xi xu xr
12 16 14
14 16 15
14 15 14.5
14.5 15 14.75
14.75 15 14.875
14.75 14.875 14.8125


necesito tener esta iteracion hasta 12 pero realmente no se como se desarrolaa las otras 6
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:Asignar una iteracion progresiva a una variable

Publicado por Felipe V.S (1 intervención) el 28/07/2010 08:28:59
Creo q tengo la respuesta a tu problema...

for i=1:10
eval(['variable' num2str(i) '=i'])
end

y eso te dará como resultado

variable1=1
variable2=2
...
variable10=10

saludos y espero q eso sea lo q andabas buscando.
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:Asignar una iteracion progresiva a una variable

Publicado por Jorge Luis (3 intervenciones) el 26/09/2010 20:10:33
Estaba buscando esto hace rato, muchas gracias
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:Asignar una iteracion progresiva a una variable

Publicado por Pepe (2 intervenciones) el 14/05/2013 17:03:38
Hola! A mi me surge la duda contraria. Me gustaria saber si teniendo unas variables como a1 a2 a3, como seria posible llamarlas en cada iteración del bucle.


Es decir si existe alguna manera de hacer lo siguiente:

for i=1:3
a()=3+i; (la duda esta en si se puede llamar a la variable para poder usarla
end
Gracias
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
Imágen de perfil de JOSE JEREMIAS CABALLERO
Val: 6.975
Oro
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

RE:Asignar una iteracion progresiva a una variable

Publicado por JOSE JEREMIAS CABALLERO (5917 intervenciones) el 14/05/2013 23:09:03
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:Asignar una iteracion progresiva a una variable

Publicado por Pepe (2 intervenciones) el 16/05/2013 09:02:18
Muchas gracias!!
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