Matlab - RECORRER UNA MATRIZ

 
Vista:
sin imagen de perfil

RECORRER UNA MATRIZ

Publicado por deivy (11 intervenciones) el 10/05/2018 05:32:51
Buen dia, la presente es para preguntar lo siguiente con la gui de Matlab:
Sucede que tengo un codigo el cual me recorre una matriz cada vez que le pulso siguiente en una guide, pero la matriz es de 1x3 y pues si le presiono siguiente mas de tres veces me sale error de que excede el tamaño de la matriz, lo que yo quiero lograr es que al pasar de la posicion (1,3) regrese a la posicion (1,1)
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 JESUS DAVID ARIZA ROYETH
Val: 3.309
Plata
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

RECORRER UNA MATRIZ

Publicado por JESUS DAVID ARIZA ROYETH (1818 intervenciones) el 10/05/2018 18:48:00
solo debes programar un condicional, por ejemplo si k es la variable que te recorre la matriz entonces debes decir que si es 4 vuelva a 1

1
2
3
if k==4
k=1;
end

y así solucionas tu problema
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

RECORRER UNA MATRIZ

Publicado por deivy (11 intervenciones) el 10/05/2018 19:13:18
Disculpa y si quiero agregar un bottom tipo ramdon en la guide es decir que coja cualquier posicion de la matriz y me arroje el valor de la posicion en la que esté se encuentre.Muchas gracias
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

RECORRER UNA MATRIZ

Publicado por JOSE JEREMIAS CABALLERO (5917 intervenciones) el 10/05/2018 19:28:30
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
function varargout = recorrer_matriz(varargin)
gui_Singleton = 1;
gui_State = struct('gui_Name',       mfilename, ...
                   'gui_Singleton',  gui_Singleton, ...
                   'gui_OpeningFcn', @recorrer_matriz_OpeningFcn, ...
                   'gui_OutputFcn',  @recorrer_matriz_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 recorrer_matriz_OpeningFcn(hObject, eventdata, handles, varargin)
handles.output = hObject;
guidata(hObject, handles);
 
 
function varargout = recorrer_matriz_OutputFcn(hObject, eventdata, handles)
global n M
M=rand(1,3)
n=1;
varargout{1} = handles.output;
 
 
function pushbutton1_Callback(hObject, eventdata, handles)
global n M
if n<=3
    disp(M(1,n))
    n=n+1;
else
    n=1;
end 


Saludos
JOSE JEREMIAS CABALLERO
Asesor de Proyectos con Matlab
Servicios de programación matla


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

RECORRER UNA MATRIZ

Publicado por deivy (11 intervenciones) el 10/05/2018 23:45:36
Buen día que pena pero basándome en su código básicamente esto hice, pero me sale error y no se porque.
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
global n M
k=dir('*mp3');
nombres={k.name};
 
M=rand(nombres)
n=1;
en el botton puse este codigo pero me sale error, basandome en el que me explicaste:
function togglebutton6_Callback(hObject, eventdata, handles)
% hObject    handle to togglebutton6 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
 
 Hint: get(hObject,'Value') returns toggle state of togglebutton6
global n M
if n<=3
 in_play=M;
set(handles.text5,'String',in_play)
[y,Fs]=audioread(in_play);
handles.player=audioplayer(y,Fs);
play(handles.player);
guidata(hObject, handles);
    n=n+1;
else
    n=1;
end
in_play=floor(nombres);
set(handles.text5,'String',in_play)
[y,Fs]=audioread(in_play);
handles.player=audioplayer(y,Fs);
play(handles.player);
guidata(hObject, handles);
 set(handles.text4,'String','Usted esta escuchando: ');
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

RECORRER UNA MATRIZ

Publicado por deivy (11 intervenciones) el 11/05/2018 00:18:39
Me sale este error entonces no se.

Error using rand
Size inputs must be numeric.
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 JESUS DAVID ARIZA ROYETH
Val: 3.309
Plata
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

RECORRER UNA MATRIZ

Publicado por JESUS DAVID ARIZA ROYETH (1818 intervenciones) el 11/05/2018 01:30:54
aquí está el error específicamente en M=rand(nombres)

1
2
3
k=dir('*mp3');
nombres={k.name};
M=rand(nombres)

nombres es una variable de tipo celda que contiene los nombres de los archivos, no puedes usar rand(nombres) porque no tiene ningún sentido lógico
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

RECORRER UNA MATRIZ

Publicado por joan (31 intervenciones) el 11/05/2018 01:42:21
Disculpa pero entonces que comando uso para cambiar el tipo celda.
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

RECORRER UNA MATRIZ

Publicado por joan (31 intervenciones) el 11/05/2018 02:57:51
Lo que sucede es que yo tengo una lista y pues en esa variable la almacene como celda y yo quiero que me coja una posicion de la lista y me la reprodusca de manera aleatoria por eso el comando rand y el resto del codigo para que me reprodusca una cancion de manera aleatoria
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 JESUS DAVID ARIZA ROYETH
Val: 3.309
Plata
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

RECORRER UNA MATRIZ

Publicado por JESUS DAVID ARIZA ROYETH (1818 intervenciones) el 11/05/2018 03:39:13
tienes varias cosas erroneas , tendría que ser algo así :

1
2
3
4
5
6
7
k=dir('*mp3');
nombres={k.name};
n=randi(3,1);
M=nombres(n);
in_play=M;
set(handles.text5,'String',in_play)
[y,Fs]=audioread(in_play);

en n te queda un número aleatorio entre 1 y 3. en M tienes el nombre de la canció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
sin imagen de perfil

RECORRER UNA MATRIZ

Publicado por deivy (11 intervenciones) el 11/05/2018 04:16:08
Pero de esa forma ya no necesito las variables gloabales?
porque me sale el siguiente error al momento de poner en mi button:
Error using which
Argument must contain a string.
Muchas gracias.
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 JESUS DAVID ARIZA ROYETH
Val: 3.309
Plata
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

RECORRER UNA MATRIZ

Publicado por JESUS DAVID ARIZA ROYETH (1818 intervenciones) el 11/05/2018 16:56:54
1
2
3
4
5
6
7
8
9
10
k=dir('*mp3');
nombres={k.name};
n=randi(3,1);
M=nombres{n};
in_play=M;
set(handles.text5,'String',in_play)
[y,Fs]=audioread(in_play);
handles.player=audioplayer(y,Fs);
play(handles.player);
guidata(hObject, handles);

Las variables globales no son necesarias si utilizas handles como en el caso de handles.player
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

RECORRER UNA MATRIZ

Publicado por deivy (11 intervenciones) el 11/05/2018 22:26:14
Muchísimas gracias
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