Matlab - Matlab - ayuda con planteamiento de función

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

Matlab - ayuda con planteamiento de función

Publicado por Américo David (1 intervención) el 21/11/2019 10:28:31
2019-11-21
2019-11-21-2
2019-11-21-3

Hola, tengo una duda, al iniciar una función como la que aparece en la parte baja izquierda de las imágenes, en la cual quiero llamar dos constantes que antes había hallado con el nombre de b1 y c1, para luego ejecutarla y obtener el resultado de y=f1(a).
Pero el resultado me figura como: []
Que es lo que podría hacer en este caso?
Muchas gracias de antemano si podrían ayudarme.
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
sin imagen de perfil
Val: 918
Bronce
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

Matlab - ayuda con planteamiento de función

Publicado por Daniel (354 intervenciones) el 24/11/2019 13:26:54
Hola,

El problema es que no has definido las variables como globales en donde las inicializas. Si no se hace esto, aunque el nombre de la variable sea el mismo, los valores no se asociaran a las variables globales. Lo puedes ver en el siguiente ejemplo:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
global var_1;
 
var_1 = 1;
var_2 = 2;
 
fun1();
fun2();
 
function fun1()
global var_1;
fprintf('fun1 %d \n', var_1);
end
 
function fun2()
global var_2;
fprintf('fun2 %d \n', var_2);
end

Lo que al ejecutar da como resultado

1
2
fun1 1
fun2

La variable var_1 la defino como global, mientras que no lo hago con var_2. En este caso al llamar a la función fun1 el valor se carga bien, var_1 vale 1 es esta función. Por otro lado, en la función fun2 la variable var_2 no tiene valor, porque no ha definido en ningún otro lugar.

Por eso, siempre que quieras usar una variable como global la tienes que definir como tal en todos los ámbitos donde la uses, en caso contrario será una variable diferente.

Saludos,
Daniel Rodríguez.
Analytics Lane
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

Matlab - ayuda con planteamiento de función

Publicado por JOSE JEREMIAS CABALLERO (5917 intervenciones) el 24/11/2019 14:28:30
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
clear, clc
global b1 c1
xlswrite('datos traccion grupo b.xlsx',rand(120,40))
Carga=xlsread('datos traccion grupo b.xlsx', 'C10:C108');
Deformacion=xlsread('datos traccion grupo b.xlsx','B10:B108');
 plot(Deformacion, Carga);
 hold on
 X=xlsread('Datos traccion grupo b.xlsx','B11:B22');
 Y=xlsread('Datos traccion grupo b.xlsx','C11:C22');
 plot(X,Y,'g')
 A=xlsread('datos traccion grupo b.xlsx', 'Q26:X33');
B=xlsread('datos traccion grupo b.xlsx','AB26:AB33');
C=inv(A)*B;
b1=C(1);
c1=C(2);
a2=C(3);
b2=C(4);
c2=C(5);
a3=C(6);
b3=C(7);
c3=C(8);
 
fprintf('f1(X)=%5.3f   X %5.2f\n',C(1),C(2))
fprintf('f2(X)=%5.3f  X^2+%5.2f  %5.2f  \n',C(3),C(4), C(5))
fprintf('f3(X)=%5.3f  X^2 %5.2f +%5.2f  \n',C(6),C(7), C(8))
disp(' ')
disp('Simpson 3/8 compuesta')
disp('f1')
a=Deformacion(2,1);
b=Deformacion(5,1);
n=input('Ingrese el numero de composiciones:');
h=(b-a)/(3*n);
y=f1(a)
function y=f1(x)
global b1 c1
y=b1*x-c1;
end

1
2
3
4
5
6
7
8
9
10
11
12
>> finalborrador
f1(X)=-0.264   X -0.79
f2(X)=0.684  X^2+ 0.56   0.55
f3(X)=-0.469  X^2 -0.08 + 0.59
 
Simpson 3/8 compuesta
f1
Ingrese el numero de composiciones:12
 
y =
 
    0.6194

Saludos
JOSE JEREMIAS CABALLERO
Asesor de Proyectos con Matlab
Servicios de programación matlab
Servicio de Asesoría Online en 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