Matlab - Como sacar el porcentaje en un uitable?el problema:

 
Vista:
sin imagen de perfil
Val: 46
Ha aumentado 1 puesto en Matlab (en relación al último mes)
Gráfica de Matlab

Como sacar el porcentaje en un uitable?el problema:

Publicado por andre (25 intervenciones) el 05/03/2020 23:36:46
Como sacar el porcentaje en un uitable?
el problema:es que solo he podido sacar el porcentaje de la primera celda (1,1)de la tabla
he intentado hacer algo con el 'if' pero al final no resulto y pues no ha salido como esperaba y lo borre al final de varios intentos:
aqui les adjunto la imagenm
porcentaje
el detalle es que quisiera que funcionara de manera que si agrego el dato a la columna , salga el porcentaje en la columna porcentaje ;como veran abajo esta un edit text que es la suma de la columna Gramos
y ala hora de que se inserte el segundo dato ,lo intente con un if pero resulto mal porque se movia;asi que lo borre
bueno gracias de antemano la ayuda

adjunto el codigo comprimido para que lo puedan revisar
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: 951
Bronce
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

Como sacar el porcentaje en un uitable?el problema:

Publicado por Daniel (344 intervenciones) el 06/03/2020 10:37:37
Hola,

Posiblemente una solución mejor es hacer directamente editable la columna del uitable. Lo que se hace con la propiedad ColumnEditable indicando con un vector de valores boolean que columnas son editables y cuales no. Por ejemplo, para hacer editable solo la segunda se puede asignar [true, false] a la propiedad.

Por otro lado, el contenido de la uitable será una celda o matriz, por lo que hay que tratar el objeto Data como tal para actualizar los valores.

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
1
Comentar
Imágen de perfil de JOSE JEREMIAS CABALLERO
Val: 7.077
Oro
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

Como sacar el porcentaje en un uitable?el problema:

Publicado por JOSE JEREMIAS CABALLERO (5855 intervenciones) el 07/03/2020 19:39:41
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
function pushbutton1_Callback(hObject, eventdata, handles)
Gramos=get(handles.edit1,'string');
datos=get(handles.uitable1,'Data');
if isempty(datos)
    datos{1,1}=Gramos;
    set(handles.uitable1,'Data',datos);
    totalmasa=sum(str2double(datos(:,1)));
    set(handles.text2,'String',totalmasa);
    % % Codigo de Prueba de Porcentaje
    datos=get(handles.uitable1,'Data');
    masa=str2double(datos(1,1));
    porcentaje=((masa*100)/totalmasa);
    datos{1,2}=porcentaje;
    set(handles.uitable1,'Data',datos);
 
 
else
    datos{end+1,1}=Gramos;
    set(handles.uitable1,'Data',datos);
    totalmasa=sum(str2double(datos(:,1)));
    set(handles.text2,'String',totalmasa);
    % % Codigo de Prueba de Porcentaje
    datos=get(handles.uitable1,'Data');
    masa=str2double(datos(1,1));
    porcentaje=((masa*100)/totalmasa);
    datos{end,2}=porcentaje;
    set(handles.uitable1,'Data',datos);
 
end

Estimado no es claro lo que desea. Seria de mucha ayuda, si pusiera un ejemplo concreto de lo que desea.
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: 46
Ha aumentado 1 puesto en Matlab (en relación al último mes)
Gráfica de Matlab

Como sacar el porcentaje en un uitable?el problema:

Publicado por andre (25 intervenciones) el 07/03/2020 23:18:06
Lo que decía es que al ingresar el dato en la tabla ,la suma de los gramos incrementa ,y a su vez se halla el porcentaje de la primer gramo:

Ejemplo si la masa ingresa es 50 ,la masatotal será 50,por lo tanto el pocentaje del costado será 100

Ejemplo 2 si la masa 1 ingresada es 50 ,la masatotal será 50 por lo que el pocentaje al costado será 100,pero al ingresar otras masas ,suponiendo que ingrese otro 50 ,la masa total será 100,por lo que el pocentaje se debería a actualizar tanto en el pocentaje primero ,como segundo,quedando en este caso 50 y 50 . y así de manera que se ingresen más datos y se actualizen los datos de la masa de la fila con respecto a la masa total(porcentaje)
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: 46
Ha aumentado 1 puesto en Matlab (en relación al último mes)
Gráfica de Matlab

Como sacar el porcentaje en un uitable?el problema:

Publicado por andre (25 intervenciones) el 07/03/2020 23:33:49
1
2
3
a medida que se ingresan datos los pocentajes respectivos se actualizan de acuerdo a su masa y masatotal
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: 951
Bronce
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

Como sacar el porcentaje en un uitable?el problema:

Publicado por Daniel (344 intervenciones) el 08/03/2020 15:26:13
Hola,

Este es un ejemplo básico con el que se obtienen los resultados escribiendo directamente en la tabla.

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
function h = editar()
 
h = uitable();
 
h.ColumnEditable = [true, false];
h.Data ={'', 100};
 
h.CellEditCallback = @editar;
 
function editar(obj, event)
    % Asignar el valor numerico
    if ischar(event.NewData)
        obj.Data{event.Indices(1), event.Indices(2)} = str2double(event.NewData);
    else
        obj.Data{event.Indices(1), event.Indices(2)} = event.NewData;
    end
 
    % Calcular el porcentaje
    datos = cell2mat(obj.Data(:,1));
    datos = 100 * datos / sum(datos);
    obj.Data(:, 2) = num2cell(datos);
 
    % Añadir una fila si toca
    if event.Indices(1) == size(obj.Data, 1)
        obj.Data{end+1, 2} = 0;
    end
end
 
end

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
1
Comentar
Imágen de perfil de JOSE JEREMIAS CABALLERO
Val: 7.077
Oro
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

Como sacar el porcentaje en un uitable?el problema:

Publicado por JOSE JEREMIAS CABALLERO (5855 intervenciones) el 08/03/2020 17:17:33
Algo así desea hacer al parecer. Pruebe en una hoja, si esos resultados son correctos.
tablas_porcentajes
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 46
Ha aumentado 1 puesto en Matlab (en relación al último mes)
Gráfica de Matlab

Como sacar el porcentaje en un uitable?el problema:

Publicado por andre (25 intervenciones) el 08/03/2020 18:17:33
si los resultados son correctos,eso era a lo que me referia,como lo hizo?
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: 951
Bronce
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

Como sacar el porcentaje en un uitable?el problema:

Publicado por Daniel (344 intervenciones) el 08/03/2020 19:02:36
Es resuelto en lo ejemplos de antes. Tanto con métodos get y set:

1
2
3
datos = get(handles.uitable1,'Data');
datos = 100 * datos / sum(datos);
set(handles.uitable1,'Data', datos);

Como accediendo a las propiedades de los objetos, como se puede hacer en las versiones más modernas.

1
2
3
datos = cell2mat(handles.uitable1.Data(:,1));
datos = 100 * datos / sum(datos);
handles.uitable1.Data(:, 2) = num2cell(datos);

Ambos son los mismo, obtener el vector con los datos, dividir por la suma y multiplicar por 100. Luego asignar el vector a la columna.
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: 7.077
Oro
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

Como sacar el porcentaje en un uitable?el problema:

Publicado por JOSE JEREMIAS CABALLERO (5855 intervenciones) el 08/03/2020 21:31:06
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
function pushbutton1_Callback(hObject, eventdata, handles)
Gramos=str2double(get(handles.edit1,'string'));
datos=get(handles.uitable1,'data');
 if isempty(datos)
    datos{1,1}=Gramos;
    totalmasa=sum(datos{1,1});
    datos{1,2}=datos{1,1}*100/totalmasa;
    set(handles.uitable1,'data',datos);
 
 else
     datos{end+1,1}=Gramos;
     totalmasa=sum(cell2mat(datos(:,1)));
     datos=[cell2mat(datos(:,1)) 100*cell2mat(datos(:,1))/totalmasa];
     set(handles.uitable1,'data',num2cell(datos));
     set(handles.text2,'String',totalmasa);
 end


Saludos
JOSE JEREMIAS CABALLERO
Asesor de Proyectos con Matlab
Servicios de programación matlab
Servicio de Asesoría Online en Matlab
[email protected]


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
1
Comentar
sin imagen de perfil
Val: 46
Ha aumentado 1 puesto en Matlab (en relación al último mes)
Gráfica de Matlab

Como sacar el porcentaje en un uitable?el problema:

Publicado por andre (25 intervenciones) el 08/03/2020 21:55:48
gracias por el codigo ,me ha servido de mucho
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: 7.077
Oro
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

Como sacar el porcentaje en un uitable?el problema:

Publicado por JOSE JEREMIAS CABALLERO (5855 intervenciones) el 09/03/2020 13:13:36
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
function varargout = porcentaje11(varargin)
gui_Singleton = 1;
gui_State = struct('gui_Name',       mfilename, ...
                   'gui_Singleton',  gui_Singleton, ...
                   'gui_OpeningFcn', @porcentaje11_OpeningFcn, ...
                   'gui_OutputFcn',  @porcentaje11_OutputFcn, ...
                   'gui_LayoutFcn',  [] , ...
                   'gui_Callback',   []);
if nargin && ischar(varargin{1})
    gui_State.gui_Callback = str2func(varargin{1});
end
 
if nargout
    [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
    gui_mainfcn(gui_State, varargin{:});
end
 
function porcentaje11_OpeningFcn(hObject, eventdata, handles, varargin)
set(handles.uitable1,'Data',[]);
handles.output = hObject;
guidata(hObject, handles);
 
function varargout = porcentaje11_OutputFcn(hObject, eventdata, handles)
varargout{1} = handles.output;
 
function pushbutton1_Callback(hObject, eventdata, handles)
Gramos=str2double(get(handles.edit1,'string'));
datos=get(handles.uitable1,'data');
 if isempty(datos)
    datos{1,1}=Gramos;
 else
     datos{end+1,1}=Gramos;
 end
     totalmasa=sum(cell2mat(datos(:,1)));
     datos=[cell2mat(datos(:,1)) 100*cell2mat(datos(:,1))/totalmasa];
     set(handles.uitable1,'data',num2cell(datos));
     set(handles.text2,'String',totalmasa);
 
function edit1_Callback(hObject, eventdata, handles)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 46
Ha aumentado 1 puesto en Matlab (en relación al último mes)
Gráfica de Matlab

Como sacar el porcentaje en un uitable?el problema:

Publicado por andre (25 intervenciones) el 08/03/2020 21:55:11
gracias por el codigo,averiguare mas sobre el uso del celleditcallback
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: 951
Bronce
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

Como sacar el porcentaje en un uitable?el problema:

Publicado por Daniel (344 intervenciones) el 10/03/2020 19:57:34
Los callbacks de los objetos son las funciones que se ejecutan cuando se produce un evento en un componente. Cada uno de los componentes tiene diferentes callbacks, siendo uitable uno de los que más tienen. Generalmente es fácil intuir por el nombre cuando se lanza, pero sino se puede ver en la documentación. En concreto celleditcallback se llama cuando se edita una celda.

Se puede acceder fácilmente a las funciones asociadas a los callbacks de los compontes desde las propiedades del objeto en App Desinger o en GUIDE con el menú secundario.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 46
Ha aumentado 1 puesto en Matlab (en relación al último mes)
Gráfica de Matlab

Como sacar el porcentaje en un uitable?el problema:

Publicado por andre (25 intervenciones) el 10/03/2020 20:22:20
Gracias por la explicación detallada.
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