Matlab - Problemas con operaciones ELEMNTO a ELEMENTO

 
Vista:
Imágen de perfil de Carlos
Val: 3
Ha aumentado su posición en 4 puestos en Matlab (en relación al último mes)
Gráfica de Matlab

Problemas con operaciones ELEMNTO a ELEMENTO

Publicado por Carlos (39 intervenciones) el 27/02/2013 00:34:42
Hola, salu2..

Disculpen colegas, alguien me ayuda con esto. Resulta que he creado una función para evaluarla en diferentes puntos al tiempo con valores diferentes de T,P y S, y encuentro que hay un posible error en la forma como intento hacer el producto ELEMNTO x ELEMENTO.

function k=constante(S,t,P)
%Esta función depende de S, t y P
k=19652.21+148.4206*t-2.327105*t.^2+(1.360477*10^-2)*t.^3-...
(5.155288*10^-5)*t.^4 +(S*(54.6746-0.603459*t)+(1.09987*10^-2)*t.^2-...
(6.1670*10^-5)*t.^3)+(S.^1.5*(7.944*10^-2)+(1.6483*10^-2)*t-...
(5.3009*10^-4)*t.^2)+P.*(3.239908+(1.43713*10^-3)-(1.16082*10^-4)*t.^2-...
(5.77905*10^-7))*t.^3+ S.*(2.2838*10^-3-(1.0981*10^-5).*t-(1*10^-6)*t.^2)+...
S^1.5.*(1.91075*10^-4)+ P.^2.*((8.50935*10^-5)-(6.12293*10^-6)*t+...
(5.2787*10^-8)*t.^2+ S*(-9.9348*10^-7 + (2.0816*10^-8)*t+...
(9.1697*10^-10)*t.^2));

PD: Intento evaluar esa función con los siguientes valores:

S=1:35;
P=1:35;
t=-10:25;

y me dice que "hay un error", el problema es que no sé donde.
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 Dave
Val: 497
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

Problemas con operaciones ELEMNTO a ELEMENTO

Publicado por Dave (1094 intervenciones) el 27/02/2013 03:39:36
Hola Carlos;

En primer lugar las operaciones elemento a elemento a nivel de vectores se realizan con variables del mismo tamaño o dimensión. En tu caso la variable "t", tiene 36 elementos y las otras variables tienen 35 elementos.

1
2
3
4
5
6
7
8
9
>> S=1:35;
P=1:35;
t=-10:25;
>> whos
  Name      Size            Bytes  Class     Attributes
 
  P         1x35              280  double
  S         1x35              280  double
  t         1x36              288  double



Espero que sea de alguna ayuda.

Saludos
Dave Correa
[email protected]
Servicios de Programación Matlab
http://fismatlab.blogspot.com/
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 Carlos
Val: 3
Ha aumentado su posición en 4 puestos en Matlab (en relación al último mes)
Gráfica de Matlab

Problemas con operaciones ELEMNTO a ELEMENTO

Publicado por Carlos (39 intervenciones) el 27/02/2013 04:19:56
Hola amigo, mucha gracias..

Pero no entiendo el "error" que me sale cuando intento hacer esto:

clear all
clc
S=1:10;
t=1:2:20;
d=999.842594 + (6.793952*10^-2)*t-(9.095290*10^-3)*t.^2+(1.001685*10^-4)*t.^3-...
(1.120083*10^-6)*t.^4+(6.536332*10^-9)*t.^5+ S.*((8.24493*10^-1)-(4.0899*10^-3)*t+...
(7.6438*10^-5)*t.^2-(8.2467*10.^-7)*t.^3+(5.3875*10^-9)*t.^4) + S.^1.5*((-5.72466*10^-3)+...
(1.0227*10^-4)*t-(1.6546*10^-6)*t.^2) + S.^2*(4.8314*10^-4);


Mira:

??? Error using ==> mtimes
Inner matrix dimensions must agree.

Error in ==> prueba at 5
d=999.842594 +
(6.793952*10^-2)*t-(9.095290*10^-3)*t.^2+(1.001685*10^-4)*t.^3-...
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 Dave
Val: 497
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

Problemas con operaciones ELEMNTO a ELEMENTO

Publicado por Dave (1094 intervenciones) el 27/02/2013 04:27:08
Hola Carlos;

El problema es que te faltaba colocar el punto en dos operaciones de potencia y multiplicación de S, ahora funciona correctamente:

El código debe ser:

1
2
3
4
5
6
7
8
clear all
clc
S=1:10;
t=1:2:20;
d=999.842594 + (6.793952*10^-2)*t-(9.095290*10^-3)*t.^2+(1.001685*10^-4)*t.^3-...
(1.120083*10^-6)*t.^4+(6.536332*10^-9)*t.^5+ S.*((8.24493*10^-1)-(4.0899*10^-3)*t+...
(7.6438*10^-5)*t.^2-(8.2467*10.^-7)*t.^3+(5.3875*10^-9)*t.^4) + (S.^1.5).*((-5.72466*10^-3)+...
(1.0227*10^-4)*t-(1.6546*10^-6)*t.^2) + (S.^2).*(4.8314*10^-4)


y el resultado obtenido es el siguiente:

1
2
3
4
5
6
7
8
9
10
11
d =
 
   1.0e+03 *
 
  Columns 1 through 9
 
    1.0007    1.0016    1.0024    1.0031    1.0037    1.0043    1.0048    1.0053    1.0057
 
  Column 10
 
    1.0060



Espero que sea de alguna ayuda.

Saludos
Dave Correa
[email protected]
Servicios de Programación Matlab
http://fismatlab.blogspot.com/
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 JERMIAS CABALLERO
Val: 6.975
Oro
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

Problemas con operaciones ELEMNTO a ELEMENTO

Publicado por JOSE JERMIAS CABALLERO (5917 intervenciones) el 27/02/2013 04:38:21
No podia entrar al webdelprogramador buen rato, pero alli te dejo la solucion.

1
2
3
4
5
6
7
8
9
10
function k=constantecsballero(S,t,P)
 %Esta función depende de S, t y P
k=19652.21+148.4206*t-2.327105*t.^2+(1.360477*10^-2)*t.^3-...
 (5.155288*10^-5)*t.^4 +(S.*(54.6746-0.603459*t)+(1.09987*10^-2)*t.^2-...
 (6.1670*10^-5)*t.^3)+(S.^1.5*(7.944*10^-2)+(1.6483*10^-2)*t-...
 (5.3009*10^-4)*t.^2) +P.*(3.239908+(1.43713*10^-3)-(1.16082*10^-4).*t.^2-...
 (5.77905*10^-7)).*t.^3 + S.*(2.2838*10^-3-(1.0981*10^-5).*t-(1*10^-6)*t.^2)+...
 S.^1.5.*(1.91075*10^-4)  + P.^2.*((8.50935*10^-5)-(6.12293*10^-6)*t+...
  (5.2787*10^-8)*t.^2 + S.*(-9.9348*10^-7 + (2.0816*10^-8).*t+...
  (9.1697*10^-10)*t.^2));


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
> S=1:36;P=1:36;t=-10:25;k=constantecsballero(S,t,P)
  Name      Size            Bytes  Class     Attributes
 
  P         1x36              288  double
  S         1x36              288  double
  k         1x36              288  double
  t         1x36              288  double
 
 
k =
 
   1.0e+06 *
 
  Columns 1 through 7
 
    0.0148    0.0135    0.0135    0.0143    0.0155    0.0168    0.0180
 
  Columns 8 through 14
 
    0.0189    0.0196    0.0200    0.0203    0.0205    0.0210    0.0220
 
  Columns 15 through 21
 
    0.0241    0.0276    0.0332    0.0415    0.0531    0.0689    0.0898
 
  Columns 22 through 28
 
    0.1166    0.1504    0.1922    0.2433    0.3047    0.3779    0.4641
 
  Columns 29 through 35
 
    0.5648    0.6814    0.8155    0.9686    1.1425    1.3389    1.5594
 
  Column 36
 
    1.8060



Saludos.
JOSE JEREMÍAS CABALLERO
Asesorías en Matlab
programador en matlab
Servicios de programación matlab
[email protected]

http://matlabcaballero.blogspot.com

http://www.lawebdelprogramador.com/foros/Matlab/1368762-COMO__HACER_SUS_PREGUNTAS_DE_MATLAB.html
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 Carlos
Val: 3
Ha aumentado su posición en 4 puestos en Matlab (en relación al último mes)
Gráfica de Matlab

Problemas con operaciones ELEMNTO a ELEMENTO

Publicado por Carlos (39 intervenciones) el 27/02/2013 04:45:37
Vale amigo.. Muchisimas Gracias porr al ayuda.

En verdad se me dificulta mucho ese tipo de operaciones en MT, no sé exactamente cuando anteponer el "." a un * ó /.. XD
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

Problemas con operaciones ELEMNTO a ELEMENTO

Publicado por JOSE JEREMIAS CABALLERO (5917 intervenciones) el 27/02/2013 05:01:49
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
OPERACIÓN ELEMENTO A ELEMENTO EN UN VECTOR
>>a=1:5
a =
     1     2     3     4     5
 
>> b=2:6
b =
     2     3     4     5     6
 
a elevado a la potencia  2 elemento a elemento
>> a.^2
ans =
     1     4     9    16     25
 
Divide el vector a entre el vector b elemento a elemento
>> a./b
ans =
0.5000    0.6667    0.7500    0.8000    0.8333
 
 
Multiplica el vector a con el vector b elemento a elemento
>> a.*b
ans =
     2     6     12     20     30



Saludos.
JOSE JEREMÍAS CABALLERO
Asesorías en Matlab
programador en matlab
Servicios de programación matlab
[email protected]

http://matlabcaballero.blogspot.com

http://www.lawebdelprogramador.com/foros/Matlab/1368762-COMO__HACER_SUS_PREGUNTAS_DE_MATLAB.html
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