
conversion de datos de uitable a matriz numérica
Publicado por Karla (1 intervención) el 12/01/2016 13:19:46
Hola
Por favor me podrían ayudar , intento hacer un código en guide para el método de gauss, ingresando los datos por medio de la uitable, el problema es que a pesar de convertir estos datos a numéricos no me lee como matriz, me salen los números unidos como si fuera una sola columna.
Me presenta un error diciendome que la matriz debe ser cuadrada (es por lo que me lee una sola columna ) y también error usando det para calcular el determinante de T.
Agradecería mucho si alguien me puede ayudar con este problema ..
Por favor me podrían ayudar , intento hacer un código en guide para el método de gauss, ingresando los datos por medio de la uitable, el problema es que a pesar de convertir estos datos a numéricos no me lee como matriz, me salen los números unidos como si fuera una sola columna.
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
% Este es el código para controlar la dimensión de la uitable de acuerdo a la necesidad del usuario
function dimension_matriz_Callback(hObject, eventdata, handles)
global row;
global column;
row= str2double(get(handles.nrows,'String'));
column= str2double(get(handles.ncolumna,'String'));
num_elem= cell(row,column);
num_elem(:,:)={''};
set(handles.tabla1,'Data',num_elem)
set(handles.tabla1,'ColumnEditable',true(1))
columna=1;
num_elem= cell(row,columna);
num_elem(:,:)={''};
set(handles.tabla2,'Data',num_elem)
set(handles.tabla2,'ColumnEditable',true(1))
%MÉTODO GAUSS
function calcular_Callback(hObject, eventdata, handles)
global row;
global column;
% obtencion de datos
M1= cell2mat(get(handles.tabla1,'Data'))
Y1= cell2mat(get(handles.tabla2,'Data'));
M= str2num(M1);
Y= str2num(Y1);
A= [M,Y];
%eliminacion hacia delante
for j=1:row-1
indiceF=j;
for i=j+1:row
if (abs(A(i,j))>abs (A(indiceF,j)))
indiceF=i;
end
end
if (j~= indiceF)
vectorTemporal= A(j,:);
A(j,:)=A(indiceF, :);
A(indiceF,:)= vectorTemporal;
end
for i=j+1:row
A(i,:)= A(i,:)+(-A(i,j)/A(j,j));
end
end
%sustitución hacia atrás
for i=row:-1:1
X(i)=A(i,(row));
for j=1+1:row
X(i)=X(i)-X(j)*A(i,j);
end
X(i)=X(i)/A(i,i);
end
EsCorrecto=true;
%comprobación de la consistencia de datos
format long
for i=1:row-1
S=0;
for j=1:column-1
S=S+M(i,j)*X(j);
end
if (abs(S-Y(i)) > 0.000000000000001)
warndlg('\nEvaluando los resultados,se ha encontrado que no se satisface la ecuacion %i','Error');
EsCorrecto= false;
break
end
end
if (~EsCorrecto)
warndlg('Los resultados podrían no ser los correctos debido a errores de redondeo','Error');
end
%escalando la matriz
T=M;
mayor= abs (T(1,1));
for i=1:row-1
for j=1:row-1
if (abs(T(i,j))> mayor)
mayor= abs(T(i,j));
end
end
end
for i=1:row-1
T(i,:)= T(i,:)/mayor;
end
if (abs (det(T) <= 0.06))
warndlg ('El sistema ingresado es un sistema mal condicionado','Error');
return;
end
set(handles.respuesta,'String',X);
Me presenta un error diciendome que la matriz debe ser cuadrada (es por lo que me lee una sola columna ) y también error usando det para calcular el determinante de T.
Agradecería mucho si alguien me puede ayudar con este problema ..
Valora esta pregunta


1