Matlab - Problemas para trabajar con variables introducidas en GUIDE

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

Problemas para trabajar con variables introducidas en GUIDE

Publicado por Luis (16 intervenciones) el 18/09/2019 22:37:08
Hola buen dia!

Estoy trabajando en una interfaz en Matlab y necesitar realizar iteraciones (alrededor de 3000) sin embargo al parecer despues de realizar la primer iteracion las variables desaparecen (las cuales introduzco capturo en la interfaz), esto por que todos los calculos los realiza en la seccion donde coloque el boton de calcular y al momento de pulsarlo "jala" todas las variables. Anexo mi codigo y una captura del la interfaz. Espero puedan ayudarme muchas gracias.

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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
%%C
 
% --- Executes on button press in Calcular.
function Calcular_Callback(hObject, eventdata, handles)
% hObject    handle to Calcular (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
%%%%%Checks para las check box, frontal%%%
S1p = get(handles.checkconveccionfp, 'value');
S2p = get(handles.checktempctefp, 'value');
S3p = get(handles.checkflujocalorfp, 'value');
S4p = get(handles.cheakadiabaticofp, 'value');
%%%%%Checks para las check box, inferior%%%
S5p = get(handles.checkconveccioninfp, 'value');
S6p = get(handles.checktempcteinfp, 'value');
S7p = get(handles.checkflujocalorinfp, 'value');
S8p = get(handles.cheakadiabaticoinfp, 'value');
%%%%%Checks para las check box, trasera%%%
S9p = get(handles.checkconvecciontp, 'value');
S10p = get(handles.checktempctetp, 'value');
S11p = get(handles.checkflujocalortp, 'value');
S12p = get(handles.cheakadiabaticotp, 'value');
%%%%%Checks para las check box, superior%%%
S13p = get(handles.checkconveccionsp, 'value');
S14p = get(handles.checktempctesp, 'value');
S15p = get(handles.checkflujocalorsp, 'value');
S16p = get(handles.cheakadiabaticosp, 'value');
%%%%%Checks para las check box, derecha%%%
S17p = get(handles.checkconvecciondp, 'value');
S18p = get(handles.checktempctedp, 'value');
S19p = get(handles.checkflujocalordp, 'value');
S20p = get(handles.cheakadiabaticodp, 'value');
%%%%%Checks para las check box, izquierda%%%
S21p = get(handles.checkconveccionizqp, 'value');
S22p = get(handles.checktempcteizqp, 'value');
S23p = get(handles.checkflujocalorizqp, 'value');
S24p = get(handles.cheakadiabaticoizqp, 'value');
 
 
%%Este es la primera parte del codigo para la creacion del mocdulo tipo
%%ansys, este es la parte transitoria%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%Datos termicos
%%%Datos para condicion de temperatura constante%%%%%%%%%%%%%%%%
TcaraFtal = str2double( get(handles.temperaturacfp, 'string') );     %%Temperatura cara frontal
TcaraIzq = str2double( get(handles.temperaturacizqp, 'string') );       %%Temperatura cara izquierda
TcaraDcha = str2double( get(handles.temperaturacdp, 'string') );      %%Temperatura cara derecha
TcaraIrior = str2double( get(handles.temperaturacinfp, 'string') );     %%Temperatura cara inferior
TcaraTsera = str2double( get(handles.temperaturactp, 'string') );     %%Temperatura cara trasera
TcaraSrior = str2double( get(handles.temperaturacsp, 'string') );     %%Temperatura cara superior
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%Datos para condicion de conveccion variable%%%%%%%%%%%%%%%%%%%%%%
hFtal = str2double( get(handles.conveccionfp, 'string') );     %%Conveccion para cara frontal
hIzq = str2double( get(handles.conveccionizqp, 'string') );       %%Conveccion para cara izquierda
hDcha = str2double( get(handles.convecciondp, 'string') );      %%Conveccion para cara derecha
hIrior = str2double( get(handles.conveccioninfp, 'string') );     %%Conveccion para cara inferior
hTsera = str2double( get(handles.convecciontp, 'string') );     %%Conveccion para cara trasera
hSrior = str2double( get(handles.conveccionsp, 'string') );     %%Conveccion para cara superior
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%Datos para condicion de flujo de calor%%%%%%%%%%%%%%%%%%%%%%%%%%%%
FlujoFtal = str2double( get(handles.flujocalorfp, 'string') );     %%Conveccion para cara frontal
FlujoIzq = str2double( get(handles.flujocalorizqp, 'string') );       %%Conveccion para cara izquierda
FlujoDcha = str2double( get(handles.flujocalordp, 'string') );      %%Conveccion para cara derecha
FlujoIrior = str2double( get(handles.flujocalorinfp, 'string') );     %%Conveccion para cara inferior
FlujoTsera = str2double( get(handles.flujocalortp, 'string') );     %%Conveccion para cara trasera
FlujoSrior = str2double( get(handles.flujocalorsp, 'string') );     %%Conveccion para cara superior
Tamb = str2double( get(handles.temperaturamb, 'string') );           %%Temperatura ambiente
ku = str2double( get(handles.conductuvidad, 'string') );               %%Conductividad térmica
q=0;               %%Generacion de calor
%Datos de nodos y longitudes
Nx=20;              %%Nodos en X
Nz=20;              %%Nodos en Z
Ny=20;              %%Nodos en Y
Lx=.2;               %%Longitud en X
Ly=.2;               %%Longitud en Y
Lz=.2;               %%Longitud en Z
dx=Lx/Nx;
dy=Ly/Ny;
dz=Lz/Nz;
%Coeficientes de nodos internos
rx=ku/dx^2;              %Coeficiente de incremento en x
ry=ku/dy^2;              %Coeficiente de incremento en y
rz=ku/dy^2;              %Coeficiente de incremento en z
px=ku/dx;                %Coeficiente de incremento en x
py=ku/dy;                %Coeficiente de incremento en y
pz=ku/dz;                %Coeficiente de incremento en z
%Inicializacion de las matrices
N=Nx*Ny*Nz;             %El numero de incognitas de la matriz
A=zeros(N,N);           %Matriz de coeficientes
T=zeros(N,1);           %Matriz de temperaturas(grafica)
B=zeros(N,1);           %Matriz de Resultados
P=-q; %Termino necesario para la generacion de calor
NFS=(ku/dx);            %Avance en las fronteras hacia atras nodo secundario
NFSA=(ku/dx);           %Avance en las fronteras hacia atras nodo secundario
%Inicializacion de ciclos para nodos internos
for k=2:Nz-1;               %Controla el nivel en Z
    for i=2:Nx-1;           %Controla la fila de posiciones en X
        for j=2:Ny-1;       %Controla las columnas en Y
            n=j+(i-1)*Ny+((k-1)*Nx*Ny);   %Le da un numero al nodo en vez de una coordenada
            A(n,n)=-2*(rx+ry+rz);
            A(n,n-1)=1*ry;     %Nodo en bloque anterior X
            A(n,n+1)=1*ry;     %Nodo en bloque siguiente X
            A(n,n+Ny)=1*rz;    %Nodo en bloque siguiente Y
            A(n,n-Ny)=1*rz;    %Nodo en bloque anterior Y
            A(n,n-Nx*Ny)=1*rx; %Nodo en bloque anterior en Z
            A(n,n+Nx*Ny)=1*rx; %Nodo en bloque siguiente en Z
        end
    end
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%Gauss Seidel para encontrar las incognitas de temperatura%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
c=1;                        %Declaracion de contador para las iteracion de temperatura
while c<3000                %Contador while para las iteraciones 
%%Solucion nodos interiores
%%%Solucion cara frontal%%%
 
 
i=1;                           %La posicion en Y no cambia en esa cara.
for k=1:Nz-1;                  %Controla la distancia en Z.                 
        for j=1:Ny;            %Controla la distancia en X.
        n =j+(i-1)*Ny+((k-1)*Nx*Ny);     %La posicion en X necesita esta cambiando
        if S1p == 1
        B(n)=(-hFtal*Tamb-NFSA*B(n+Nx))/((-ku/dx)-hFtal);    %Frontera en cara frontal
        end
        if S2p == 1
            B(n)=TcaraFtal;                        %Temperatura constante cara frontal
        end
        if S3p == 1
            %%PENDIENTE%%                          %Flujo de calor frontal
        end
        if S4p == 1
            hFtal = 0;                             %Condicion de conveccion cara frontal
            B(n)=(-hFtal*Tamb-NFSA*B(n+Nx))/((-ku/dx)-hFtal);
        end
        end
end
 
%%%Solucion cara inferior%%%
k=1;                           %La posicion en Z no cambia en esa cara.
for i=2:Nx-1;                  %Controla la distancia en Z.                 
        for j=2:Ny-1;          %La posicion en X necesita esta cambiando
        n=j+(i-1)*Ny+((k-1)*Nx*Ny);     %Le da un numero al nodo en vez de una coordenada
        if S5p == 1
        B(n)=(-hIrior*Tamb-NFSA*B(n+Ny*Nx))/((-ku/dx)-hIrior);      %Frontera en cara inferior
        end
        if S6p == 1
            B(n)=TcaraIrior;                       %Temperatura constante cara frontal
        end
        if S7p == 1
            %%PENDIENTE%%                          %Flujo de calor frontal
        end
        if S8p == 1
            hIrior = 0;                             %Condicion de conveccion cara frontal
            B(n)=(-hIrior*Tamb-NFSA*B(n+Ny*Nx))/((-ku/dx)-hIrior);
        end
        end
end
%%%Solucion cara trasera%%%
i=Nx;                      %La posicion en X no cambia en esa cara.
for k=1:Nz-1;              %Controla la distancia en Z.                 
        for j=1:Ny;        %La posicion en Y necesita esta cambiando
        n=j+(i-1)*Ny+((k-1)*Nx*Ny);     %Le da un numero al nodo en vez de una coordenada
        if S9p == 1
        B(n)=(-hTsera*Tamb-NFS*B(n-Nx))/((-ku/dx)-hTsera);      %Frontera en cara inferior
        end
        if S10p == 1
        B(n)=TcaraTsera;                        %Temperatura constante cara frontal
        end
        if S11p == 1
            %%PENDIENTE%%                          %Flujo de calor frontal
        end
        if S12p == 1
        hTsera = 0;                             %Condicion de conveccion cara frontal
        B(n)=(-hTsera*Tamb-NFS*B(n-Nx))/((-ku/dx)-hTsera);
        end
        end
end
 
%%%Solucion cara superior%%%
k=Nz;                      %La posicion en Z no cambia en esa cara.
for i=1:Nx;                %Controla la distancia en Z.                 
        for j=1:Ny;        %La posicion en X necesita esta cambiando
        n=j+(i-1)*Ny+((k-1)*Nx*Ny);     %Le da un numero al nodo en vez de una coordenada
        if S13p == 1
        B(n)=(-hSrior*Tamb-NFS*B(n-Nx*Ny))/((-ku/dx)-hSrior);      %Frontera en cara inferior
        end
        if S14p == 1
            B(n)=TcaraSrior;                        %Temperatura constante cara frontal
        end
        if S15p == 1
            %%PENDIENTE%%                          %Flujo de calor frontal
        end
        if S16p == 1
            hSrior = 0;                             %Condicion de conveccion cara frontal
            B(n)=(-hSrior*Tamb-NFS*B(n-Nx*Ny))/((-ku/dx)-hSrior);
        end
        end
end
 
%%%Solucion cara derecha%%%
j=1;                         %La posicion en X no cambia en esa cara.
for i=2:Nx-1;                %Controla la distancia en Z.                 
        for k=1:Nz;          %La posicion en Y necesita esta cambiando
        n=j+(i-1)*Ny+((k-1)*Nx*Ny);     %Le da un numero al nodo en vez de una coordenada
        if S17p == 1
        B(n)=(-hDcha*Tamb-NFS*B(n+1))/((-ku/dx)-hDcha);      %Frontera en cara inferior
        end
        if S18p == 1
            B(n)=TcaraDcha;                        %Temperatura constante cara frontal
        end
        if S19p == 1
            %%PENDIENTE%%                          %Flujo de calor frontal
        end
        if S20p == 1
            hDcha = 0;                             %Condicion de conveccion cara frontal
            B(n)=(-hDcha*Tamb-NFS*B(n+1))/((-ku/dx)-hDcha);
        end
        end
end
 
%%%Solucion frontera a conveccion cara izquierda%%%
j=Ny;                        %La posicion en X no cambia en esa cara.
for i=2:Nx-1;                %Controla la distancia en Z.                 
        for k=1:Nz-1;        %La posicion en Y necesita esta cambiando
        n=j+(i-1)*Ny+((k-1)*Nx*Ny);     %Le da un numero al nodo en vez de una coordenada
        if S21p == 1
        B(n)=(-hIzq*Tamb-NFSA*B(n-1))/((-ku/dx)-hIzq);           %Frontera en cara inferior
        end
        if S22p == 1
            B(n)=TcaraIzq;                        %Temperatura constante cara frontal
        end
        if S23p == 1
            %%PENDIENTE%%                          %Flujo de calor frontal
        end
        if S24p == 1
            hIzq = 0;                             %Condicion de conveccion cara frontal
            B(n)=(-hIzq*Tamb-NFSA*B(n-1))/((-ku/dx)-hIzq);
        end
        end
end
 
for i=2:Nx-1;               %Controla el nivel de posiciones en Z
    for k=2:Nz-1;           %Controla la fila de posiciones de los coeficientes
        for j=2:Ny-1;       %Controla las columnas de los coeficientes
            n=j+(i-1)*Ny+((k-1)*Nx*Ny);  %Le da un numero al nodo en vez de una coordenada
            B(n)=(1/(2*(rx+ry+rz)))*(A(n,n)*B(n)+(A(n,n-1)*B(n-1)+A(n,n+1)*B(n+1)+A(n,n+Ny)*B(n+Ny)+A(n,n-Ny)*B(n-Ny)+A(n,n-Nx*Ny)*B(n-Nx*Ny)+A(n,n+Nx*Ny)*B(n+Nx*Ny)));
        end
    end
end
c=c+1;
end
 
%Reacomodo de posiciones de vector
f1=figure;
reshape(B,Nx,Ny,Nz);
[x,y,z]= meshgrid(1:1:Nx,1:1:Ny,1:1:Nz);
slice(x,y,z,ans(:,:,:),[1,Nx],[1,Ny],[1,Nz]);
shading interp
xlabel('X','fontSize',12);
ylabel('Y','fontSize',12);
zlabel('Z','fontSize',12);
colorbar('location','eastoutside','fontsize',12);
c= colorbar;
c.Label.String = 'Temperatura °C';
title('Difusión de Calor','fontsize',12);
grid on;
axis('equal');
ax.XAxisLocation = 'origin';
ax.YAxisLocation = 'origin';
ax.ZAxisLocation = 'origin';

En la imagen que adjunto se muestra mi interfaz
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

Problemas para trabajar con variables introducidas en GUIDE

Publicado por JOSE JEREMIAS CABALLERO (5917 intervenciones) el 18/09/2019 23:14:34
podría subir tanto su archivo *.fig y su archivo *.m poder ejecutarlo . comprima tales archivo y lo sube al foro.


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
sin imagen de perfil
Val: 26
Ha aumentado su posición en 2 puestos en Matlab (en relación al último mes)
Gráfica de Matlab

Problemas para trabajar con variables introducidas en GUIDE

Publicado por Luis (16 intervenciones) el 18/09/2019 23:23:48
Listo! Te los acabo de adjuntar, gracias por tu respuesta.
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 para trabajar con variables introducidas en GUIDE

Publicado por JOSE JEREMIAS CABALLERO (5917 intervenciones) el 18/09/2019 23:34:23
¿como ejecuta y con que valores su interface?.Podria subir una imagen con los datos correspondientes.
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: 26
Ha aumentado su posición en 2 puestos en Matlab (en relación al último mes)
Gráfica de Matlab

Problemas para trabajar con variables introducidas en GUIDE

Publicado por Luis (16 intervenciones) el 18/09/2019 23:54:05
Muchas gracias por tu respuesta. Quiza formulé mal mi pregunta desde un inicio, concreteamente necesito como al pulsar un push boton las variables que estan en los edit text sean capturadas y a las vez guardadas

1
2
3
4
5
FlujoFtal = str2double( get(handles.flujocalorfp, 'string') );     %%Conveccion para cara frontal
FlujoIzq = str2double( get(handles.flujocalorizqp, 'string') );       %%Conveccion para cara izquierda
FlujoDcha = str2double( get(handles.flujocalordp, 'string') );      %%Conveccion para cara derecha
FlujoIrior = str2double( get(handles.flujocalorinfp, 'string') );     %%Conveccion para cara inferior
FlujoTsera = str2double( get(handles.flujocalortp, 'string') );     %%Conveccion para cara trasera

esas por ejemplo.

Me interesa guardarlas porque inmediatamente despues de capturar los datos las uso, sin embargo con el uso de iteracion paraciera que su valor se pierde, por lo tanto necesito a la vez de capturarlas, guardarlas para seguirlas usando posteriormente.
Gracias por tu respuesta.
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 para trabajar con variables introducidas en GUIDE

Publicado por JOSE JEREMIAS CABALLERO (5917 intervenciones) el 19/09/2019 00:08:26
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
>> ModuloAnsys2
 
FlujoFtal =
 
     5
 
 
FlujoIzq =
 
    25
 
 
FlujoDcha =
 
    21

Su código si captura los datos que ingresados por teclado, esos datos no tienen incidencia en la iteració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