Matlab - Operaciones entre columnas Matlab

   
Vista:

Operaciones entre columnas Matlab

Publicado por David (32 intervenciones) el 26/08/2017 01:40:12
Hola,

Me gustaria saber como puedo operar entre columnas de una uitable en Matlab, ya sea multiplicar la columna A * la columna B , o tambien tengo la duda de como realizar una sumatoria de toda una columna.

Me funciono esto para la sumatoria de una columna, que se activa por medio de un pushbutton

1
2
3
4
function pushbutton1_Callback(hObject, eventdata, handles)
A=get(handles.uitable1,'Data');
B=cell2mat(A(:,1));
set(handles.edit1,'String',sum(B(:,1)))

Pero si por ejemplo pongo

1
2
3
4
function pushbutton1_Callback(hObject, eventdata, handles)
A=get(handles.uitable1,'Data');
B=cell2mat(A(:,2));
set(handles.edit1,'String',sum(B(:,2)))

para hacer una sumatoria de la columna B

me sale este error

Index exceeds matrix dimensions.

Error in ejemplo2>pushbutton1_Callback (line 80)
1
set(handles.edit1,'String',sum(B(:,2)))


tambien trate para multiplicacion y sumatoria a la vez

1
sumatoriaMultiplicacionAB = set(handles.edit1,'String',sum(A(:,2).*B(:,3)))

pero tambien me sale error

como podria hacer estas operaciones??
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 Lindsey

Operaciones entre columnas Matlab

Publicado por Lindsey lindsey.acourtt@gmail.com (86 intervenciones) el 26/08/2017 05:23:18
Lo que ocurre es que la variable que escribes como B tiene una sola columna, por lo que cuando escribes B(:,2) te da error porque la segunda columna no existe. Respecto a B(:,3) no has escrito como lo defines pero supongo que sería el mismo error.

En resumen:

1
B=cell2mat(A(:,2));

La línea anterior te genera una variable B de una sola columna, lo que da lugar a que B(:,2) y B(:,3) sean inválidos.
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

Operaciones entre columnas Matlab

Publicado por JOSE JEREMIAS CABALLERO jjcc94@hotmail.com (4441 intervenciones) el 26/08/2017 15:33:02
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
function varargout = tablacaballero19(varargin)
gui_Singleton = 1;
gui_State = struct('gui_Name',       mfilename, ...
                   'gui_Singleton',  gui_Singleton, ...
                   'gui_OpeningFcn', @tablacaballero19_OpeningFcn, ...
                   'gui_OutputFcn',  @tablacaballero19_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 tablacaballero19_OpeningFcn(hObject, eventdata, handles, varargin)
set(handles.uitable1,'Data', rand(5,4));
handles.output = hObject;
guidata(hObject, handles);
 
function varargout = tablacaballero19_OutputFcn(hObject, eventdata, handles)
varargout{1} = handles.output;
 
function pushbutton1_Callback(hObject, eventdata, handles)
A=get(handles.uitable1,'Data')
set(handles.edit1,'String',sum(A(:,1)));
set(handles.edit2,'String',sum(A(:,2)));
 
function edit1_Callback(hObject, eventdata, handles)
function edit2_Callback(hObject, eventdata, handles)


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

Operaciones entre columnas Matlab

Publicado por David (32 intervenciones) el 26/08/2017 17:07:20
Vale, entiendo, lo volvi a hacer, pero cuando pongo lo que me dices sale este error:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Undefined function 'sum' for input arguments of type 'cell'.
 
Error in tabla>pushbutton1_Callback (line 127)
set(handles.edit1,'String',sum(A(:,1)));
 
Error in gui_mainfcn (line 95)
        feval(varargin{:});
 
Error in tabla (line 42)
    gui_mainfcn(gui_State, varargin{:});
 
Error in @(hObject,eventdata)tabla('pushbutton1_Callback',hObject,eventdata,guidata(hObject))
 
 
Error while evaluating UIControl Callback


Me sale el mismo error cuando trato de multiplicar dos columnas y realizar la sumatoria de ellas.
Tambien vi que estas precarrgando numeros aleatorios a la tabla, y si asi funciona pero para mi tabla el usuario debe ingresar los datos, de lo contrario, no serviria de mucho.

Este es mi 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
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
function varargout = tabla(varargin)
% TABLA MATLAB code for tabla.fig
%      TABLA, by itself, creates a new TABLA or raises the existing
%      singleton*.
%
%      H = TABLA returns the handle to a new TABLA or the handle to
%      the existing singleton*.
%
%      TABLA('CALLBACK',hObject,eventData,handles,...) calls the local
%      function named CALLBACK in TABLA.M with the given input arguments.
%
%      TABLA('Property','Value',...) creates a new TABLA or raises the
%      existing singleton*.  Starting from the left, property value pairs are
%      applied to the GUI before tabla_OpeningFcn gets called.  An
%      unrecognized property name or invalid value makes property application
%      stop.  All inputs are passed to tabla_OpeningFcn via varargin.
%
%      *See GUI Options on GUIDE's Tools menu.  Choose "GUI allows only one
%      instance to run (singleton)".
%
% See also: GUIDE, GUIDATA, GUIHANDLES
 
% Edit the above text to modify the response to help tabla
 
% Last Modified by GUIDE v2.5 26-Aug-2017 10:05:58
 
% Begin initialization code - DO NOT EDIT
gui_Singleton = 1;
gui_State = struct('gui_Name',       mfilename, ...
                   'gui_Singleton',  gui_Singleton, ...
                   'gui_OpeningFcn', @tabla_OpeningFcn, ...
                   'gui_OutputFcn',  @tabla_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
% End initialization code - DO NOT EDIT
 
 
% --- Executes just before tabla is made visible.
function tabla_OpeningFcn(hObject, eventdata, handles, varargin)
% This function has no output args, see OutputFcn.
% hObject    handle to figure
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
% varargin   command line arguments to tabla (see VARARGIN)
 
% Choose default command line output for tabla
handles.output = hObject;
 
% Update handles structure
guidata(hObject, handles);
 
% UIWAIT makes tabla wait for user response (see UIRESUME)
% uiwait(handles.figure1);
 
 
% --- Outputs from this function are returned to the command line.
function varargout = tabla_OutputFcn(hObject, eventdata, handles)
% varargout  cell array for returning output args (see VARARGOUT);
% hObject    handle to figure
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
 
% Get default command line output from handles structure
varargout{1} = handles.output;
 
 
 
function edit1_Callback(hObject, eventdata, handles)
% hObject    handle to edit1 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
 
% Hints: get(hObject,'String') returns contents of edit1 as text
%        str2double(get(hObject,'String')) returns contents of edit1 as a double
 
 
% --- Executes during object creation, after setting all properties.
function edit1_CreateFcn(hObject, eventdata, handles)
% hObject    handle to edit1 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    empty - handles not created until after all CreateFcns called
 
% Hint: edit controls usually have a white background on Windows.
%       See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
    set(hObject,'BackgroundColor','white');
end
 
 
 
function edit2_Callback(hObject, eventdata, handles)
% hObject    handle to edit2 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
 
% Hints: get(hObject,'String') returns contents of edit2 as text
%        str2double(get(hObject,'String')) returns contents of edit2 as a double
 
 
% --- Executes during object creation, after setting all properties.
function edit2_CreateFcn(hObject, eventdata, handles)
% hObject    handle to edit2 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    empty - handles not created until after all CreateFcns called
 
% Hint: edit controls usually have a white background on Windows.
%       See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
    set(hObject,'BackgroundColor','white');
end
 
 
% --- Executes on button press in pushbutton1.
function pushbutton1_Callback(hObject, eventdata, handles)
 
A = get(handles.uitable1,'Data');
 
set(handles.edit1,'String',sum(A(:,1)));
 
 
% --- Executes on button press in pushbutton2.
function pushbutton2_Callback(hObject, eventdata, handles)
 
B = get(handles.uitable1,'Data');
 
set(handles.edit2,'String',sum(B(:,2)));
 
 
 
function edit3_Callback(hObject, eventdata, handles)
% hObject    handle to edit3 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
 
% Hints: get(hObject,'String') returns contents of edit3 as text
%        str2double(get(hObject,'String')) returns contents of edit3 as a double
 
 
% --- Executes during object creation, after setting all properties.
function edit3_CreateFcn(hObject, eventdata, handles)
% hObject    handle to edit3 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    empty - handles not created until after all CreateFcns called
 
% Hint: edit controls usually have a white background on Windows.
%       See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
    set(hObject,'BackgroundColor','white');
end
 
 
% --- Executes on button press in pushbutton3.
function pushbutton3_Callback(hObject, eventdata, handles)
 
C = get(handles.uitable1,'Data');
 
set(handles.edit3,'String',sum((C(:,1)).*(C(:,2))));
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

Operaciones entre columnas Matlab

Publicado por JOSE JEREMIAS CABALLERO jjcc94@hotmail.com (4441 intervenciones) el 26/08/2017 17:50:54
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
function edit1_Callback(hObject, eventdata, handles)
function edit2_Callback(hObject, eventdata, handles)
 
function pushbutton1_Callback(hObject, eventdata, handles)
A = get(handles.uitable1,'Data');
set(handles.edit1,'String',sum(cell2mat(A(:,1))));
 
function pushbutton2_Callback(hObject, eventdata, handles)
A= get(handles.uitable1,'Data');
set(handles.edit2,'String',sum(cell2mat(A(:,2))));
 
function edit3_Callback(hObject, eventdata, handles)
function pushbutton3_Callback(hObject, eventdata, handles)
A= get(handles.uitable1,'Data');
set(handles.edit3,'String',sum((cell2mat(A(:,1))).*cell2mat((A(:,2)))));


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