()-indexing must appear last in an index expression What is my mistake? method gauss jordan gui
1 visualización (últimos 30 días)
Mostrar comentarios más antiguos
Erwin Avendaño
el 3 de Nov. de 2017
Editada: Walter Roberson
el 3 de Nov. de 2017
function pushbutton6_Callback(hObject, eventdata, handles)
set(handles.pushbutton1, 'value');
u=1;
set(handles.pushbutton3, 'value');
u=2
set(handles.pushbutton4, 'value');
u=3
switch u
case 1
m=[str2double(get(handles.edit3,'string')) str2double(get(handles.edit4,'string'))(str2double(get(handles.edit9,'string'))); str2double(get(handles.edit10,'string')) str2double(get(handles.edit11,'string')) str2double(get(handles.edit15,'string'))];
case 2
m=[str2double(get(handles.edit3,'string')) str2double(get(handles.edit4,'string')) str2double(get(handles.edit6,'string')) (str2double(get(handles.edit9,'string'))); str2double(get(handles.edit10,'string')) str2double(get(handles.edit11,'string')) str2double(get(handles.edit12,'string')) (str2double(get(handles.edit15,'string'))); str2double(get(handles.edit16,'string')) str2double(get(handles.edit17,'string')) str2double(get(handles.edit18,'string')) str2double(get(handles.edit21,'string')) ];
case 3
case 4
otherwise
x=0
end
if all(size(m)==[2,3])
h=1
else
if all(size(m)==[3,4])
h=2
else
if all(size(m)==[4,5])
h=3
else
if all(size(m)==[5,6])
h=4
end
end
end
end
switch h
case 1
m(1,:)=m(1,:)/m(1,1);
m(2,:)=m(2,:)-(m(2,1))*(m(1,:));
m(2,:)=m(2,:)/m(2,2);
m(1,:)=m(1,:)-(m(1,2))*(m(2,:));
x1=m(1,3)
x2=m(2,3)
set(handles.edit35,'string',x1);
set(handles.edit36,'string',x2);
case 2
m(1,:)=m(1,:)/m(1,1);
m(2,:)=m(2,:)-(m(2,1))*(m(1,:));
m(3,:)=m(3,:)-(m(3,1))*(m(1,:));
m(2,:)=m(2,:)/m(2,2);
m(3,:)=m(3,:)-(m(3,2))*(m(2,:));
m(3,:)=m(3,:)/m(3,3);
m(2,:)=m(2,:)-(m(2,3))*(m(3,:));
m(1,:)=m(1,:)-(m(1,3))*(m(3,:));
m(1,:)=m(1,:)-(m(1,2))*(m(2,:));
x1=m(1,4)
x2=m(2,4)
x3=m(3,4)
set(handles.edit35,'string',x1);
set(handles.edit36,'string',x2);
set(handles.edit37,'string',x3);
case 3
x=3
case 4
x=2
otherwise
x=32
end
matlab says that this is my mistake
m=[str2double(get(handles.edit3,'string')) str2double(get(handles.edit4,'string'))(str2double(get(handles.edit9,'string'))); str2double(get(handles.edit10,'string')) str2double(get(handles.edit11,'string')) str2double(get(handles.edit15,'string'))];
0 comentarios
Respuesta aceptada
OCDER
el 3 de Nov. de 2017
You can't do the following:
str2double(get(handles.edit4,'string'))(str2double(get(handles.edit9,'string')));
Did you mean to add a space between the terms? If not and you want to access the nth index of this variable, keep reading.
Unlike other languages like JAVA, you can't immediately take the output of str2double and find the value at the nth index. You need to use a temporary variable to do this kind of indexing. See this example:
a = {'1' '2' '3'}
b = '2'
c = str2double(a)(str2double(b)) % Error: ()-indexing must appear last in an index expression.
temp = str2double(a);
c = temp(str2double(b)); %no error. this works.
In your case, any string that will return a matrix should be stored in a temporary matrix.
temp = str2double(get(handles.edit4,'string'))
value = tempMat(str2double(get(handles.edit9,'string')));
If you have to extract a value using 2 edit text boxes frequently, consider making a simple function like this:
function Value = getValue(Handle1, Handle2)
Values = str2double(get(Handle1, 'string'));
Value = Values(str2double(get(Handle2, 'string')));
And whenever you want to get a value from a edit text box based on the index value of another text box, do this:
getValue(handles.edit4, handles.edit9)
0 comentarios
Más respuestas (0)
Ver también
Categorías
Más información sobre Structures en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!