Matlab - Almacenamiento de datos recogidos por un for en Matlab

 
Vista:
sin imagen de perfil
Val: 33
Ha aumentado su posición en 3 puestos en Matlab (en relación al último mes)
Gráfica de Matlab

Almacenamiento de datos recogidos por un for en Matlab

Publicado por David (32 intervenciones) el 24/08/2017 02:15:31
Hola,

Tengo una duda, tengo 3 for generandome datos, dichos for se detienen con un if el cual dice que si la variable f2 es mayor al valor obtenido cualquiera de los 3 for, estos se detendran,

Mi pregunta es, como puedo yo almacenar los datos que me esta generando el for dentro de un arreglo???

Es decir tomar los valores generados por la variable fpqr100, fpqr010 y fpqr001; y tener acceso a dichos datos en un arreglo ya sea para exportarlos a un excel o a una tabla.

Otra duda que tengo, es que cuando el for se inicia y llega a la condicion de if el ultimo valor obtenido usualmente es mayor a la variable f2, como hago para que solo queden los datos que si o si esten por debajo de la variable f2.

Habia pensado en que una vez tuviese el arreglo con los datos de los 3 for, ingresar a el y ponerle un condicional en el que se eliminen los valores mayores a la variable f2.

Aqui se puede ver como tengo el codigo:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
ohhh = 1000000000000;
L = 10;
W = 8;
H = 2.3;
c = 340;
p100 = 0;
q100 = 0;
r100 = 0;
f2 = 104.25;
%Axiales variando p
for p100 = 1:ohhh
 
fpqr100 = (c/2)*sqrt(((p100^2)/(L^2))+((q100^2)/(W^2))+((r100^2)/(H^2)))
 
if fpqr100 >= f2
break;
end
 
end
p010 = 0;
q010 = 0;
r010 = 0;
%Axiales variando q
for q010 = 1:ohhh
 
fpqr010 = (c/2)*sqrt(((p010^2)/(L^2))+((q010^2)/(W^2))+((r010^2)/(H^2)))
 
if fpqr010 >= f2
break;
end
 
end
 
p001 = 0;
q001 = 0;
r001 = 0;
 
%Axiales variando r
 
for r001 = 1:ohhh
 
fpqr001 = (c/2)*sqrt(((p001^2)/(L^2))+((q001^2)/(W^2))+((r001^2)/(H^2)))
 
if fpqr001 >= f2
break;
end
 
end


Aqui se puede ver lo que me arroja el programa:

fpqr100 =

17


fpqr100 =

34


fpqr100 =

51


fpqr100 =

68


fpqr100 =

85


fpqr100 =

102


fpqr100 =

119.0000


fpqr010 =

21.2500


fpqr010 =

42.5000


fpqr010 =

63.7500


fpqr010 =

85


fpqr010 =

106.2500


fpqr001 =

73.9130


fpqr001 =

147.8261
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
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

Almacenamiento de datos recogidos por un for en Matlab

Publicado por JOSE JEREMIAS CABALLERO (5917 intervenciones) el 24/08/2017 08:25:19
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
>> clear all
ohhh = 1000000000000;
L = 10; W = 8;  H = 2.3;    c = 340;    q100 = 0;   r100 = 0;   f2 = 104.25;
%Axiales variando p
for p100 = 1:ohhh
    fpqr100(p100)= (c/2)*sqrt(((p100^2)/(L^2))+((q100^2)/(W^2))+((r100^2)/(H^2)));
    if fpqr100(p100) >= f2
    break;
    end
end
p010 = 0;      r010 = 0;
%Axiales variando q
for q010 = 1:ohhh
    fpqr010(q010) = (c/2)*sqrt(((p010^2)/(L^2))+((q010^2)/(W^2))+((r010^2)/(H^2)));
    if fpqr010(q010) >= f2
   	break;
    end
end
p001 = 0;   q001 = 0;
%Axiales variando r
for r001 = 1:ohhh
    fpqr001(r001) = (c/2)*sqrt(((p001^2)/(L^2))+((q001^2)/(W^2))+((r001^2)/(H^2))) ;
    if fpqr001(r001)  >= f2
        break;
    end
end
fpqr100
 fpqr010
  fpqr001
fpqr100 =
   17.0000   34.0000   51.0000   68.0000   85.0000  102.0000  119.0000
fpqr010 =
   21.2500   42.5000   63.7500   85.0000  106.2500
fpqr001 =
   73.9130  147.8261
>>
Saludos
JOSE JEREMIAS CABALLERO
Asesor de Proyectos con Matlab
Servicios de programación matlab


http://matlabcaballero.blogspot.com
https://www.facebook.com/matlabcaballero
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
sin imagen de perfil
Val: 33
Ha aumentado su posición en 3 puestos en Matlab (en relación al último mes)
Gráfica de Matlab

Almacenamiento de datos recogidos por un for en Matlab

Publicado por David (32 intervenciones) el 24/08/2017 23:04:10
Vale, muchas gracias, funciono, perfectamente.

Otra duda, ya logre unir los tres vectores y los ordene de menor a mayor, es decir ya tengo un vector con todos los datos generados llamado "axiales", pero ahora mi problema es que necesito eliminar los datos del vector axiales que sean mayores al valor "f2", si se podria hacer???'

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
ohhh = 1000000000000;
L = 10; W = 8;  H = 2.3;    c = 340;    q100 = 0;   r100 = 0;   f2 = 104.25;
%Axiales variando p
for p100 = 1:ohhh
    fpqr100(p100)= (c/2)*sqrt(((p100^2)/(L^2))+((q100^2)/(W^2))+((r100^2)/(H^2)));
    if fpqr100(p100) >= f2
    break;
    end
end
p010 = 0;      r010 = 0;
%Axiales variando q
for q010 = 1:ohhh
    fpqr010(q010) = (c/2)*sqrt(((p010^2)/(L^2))+((q010^2)/(W^2))+((r010^2)/(H^2)));
    if fpqr010(q010) >= f2
   	break;
    end
end
p001 = 0;   q001 = 0;
%Axiales variando r
for r001 = 1:ohhh
    fpqr001(r001) = (c/2)*sqrt(((p001^2)/(L^2))+((q001^2)/(W^2))+((r001^2)/(H^2))) ;
    if fpqr001(r001)  >= f2
        break;
    end
end
 
fpqr100;
fpqr010;
fpqr001;
 
% Todos los modos axiales encontrados
axiales = [fpqr100, fpqr010, fpqr001];
 
% Orden de menor a mayor de los modos axiales encontrados
for i = 1:length(axiales)
    for j = i:length(axiales)
        if (axiales(i) > axiales(j))
            e = axiales(i);
            axiales(i) = axiales(j);
            axiales(j) = e;
        end
    end
end
disp('Modos Axiales: ')
disp(axiales)
 
%Eliminacion de los modos axiales mayores a f2
 
%????


Modos Axiales:
Columns 1 through 12

17.0000 21.2500 34.0000 42.5000 51.0000 63.7500 68.0000 73.9130 85.0000 85.0000 102.0000 106.2500

Columns 13 through 14

119.0000 147.8261
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

Almacenamiento de datos recogidos por un for en Matlab

Publicado por JOSE JEREMIAS CABALLERO (5917 intervenciones) el 26/08/2017 15:38:24
1
2
axiales
axiales(axiales>f2)=[]
1
2
3
4
5
6
7
axiales =
  Columns 1 through 11
   17.0000   21.2500   34.0000   42.5000   51.0000   63.7500   68.0000   73.9130   85.0000   85.0000  102.0000
  Columns 12 through 14
  106.2500  119.0000  147.8261
axiales =
   17.0000   21.2500   34.0000   42.5000   51.0000   63.7500   68.0000   73.9130   85.0000   85.0000  102.0000

Saludos
JOSE JEREMIAS CABALLERO
Asesor de Proyectos con Matlab
Servicios de programación matlab


http://matlabcaballero.blogspot.com
https://www.facebook.com/matlabcaballero
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