Matlab - Comprobar números repetidos en un vector en MATLAB

 
Vista:

Comprobar números repetidos en un vector en MATLAB

Publicado por civecokar (2 intervenciones) el 03/04/2012 19:40:33
Hola amigos, necesito un algoritmo que me diga si un número está repetido en un vector, y si es así me genere otro distinto que no se repite.

Yo parto de un vector generado de esta forma

for j=1:tamano
vector(j)=ceil(rand(1,1)*(maximo-1));
end

Si suponemos tamano=4 y maximo=8, un ejemplo de vector generado es el siguiente: 4 2 5 5

Lo que yo quiero es un algoritmo que me diga que ese último número está repetido y me genere otro que no se repita con alguno de los anteriores.
He probado varias cosas pero todas tienen un pequeño fallo, seguramente sea algo sencillo, pero no me sale, espero que me ayuden

Un saludo y gracias
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 JOSE JEREMIAS CABALLERO
Val: 6.975
Oro
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

Comprobar números repetidos en un vector en MATLAB

Publicado por JOSE JEREMIAS CABALLERO (5917 intervenciones) el 03/04/2012 23:14:08
Hola civecokar
No debes poner "seguramente sea algo sencillo", , eso de sencillo es relativo, ademas puedes crear subjetividades.

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
function [x1 xx x]=numeros_repetidos(cantidad_numeros)
%% http://www.lawebdelprogramador.com/foros/Matlab/1322232-Comprobar_numeros_repetidos_en_un_vector_en_MATLAB.html
% Hola amigos, necesito un algoritmo que me diga si un número está repetido
% en un vector, y si es así me genere otro distinto que no se repite.
%  
% Yo parto de un vector generado de esta forma
%  
% for j=1:tamano
%  vector(j)=ceil(rand(1,1)*(maximo-1));
%  end
%  
% Si suponemos tamano=4 y maximo=8, un ejemplo de vector generado es el
% siguiente: 4 2 5 5
%  
% Lo que yo quiero es un algoritmo que me diga que ese último número está
% repetido y me genere otro que no se repita con alguno de los anteriores.
%  He probado varias cosas pero todas tienen un pequeño fallo, seguramente
%  sea algo sencillo, pero no me sale, espero que me ayuden 
% Un saludo y gracias
 
x=ceil(200*rand(1,cantidad_numeros));
x1=x;
xx=sort(x);
for i=1:length(xx)-1;
    if xx(i)==xx(i+1)
        display(['Elemento repetido ',num2str(xx(i))]);
    end
end
y=unique(x);
lon=length(y);
while lon<length(x)
tmp= ceil(200*rand(1,length(x1)-lon));
x=[y tmp];
y=unique(x);
lon=length(y);
end



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
EJECUCION
 
>> [x1 xx  x]=numeros_repetidos(10)
Elemento repetido 22
 
x1 =
 
    22    22    54   105   195   143    63    59   171   183
 
 
xx =
 
    22    22    54    59    63   105   143   171   183   195
 
 
x =
 
    22    54    59    63   105   143   171   183   195   128
 
>> [x1 xx  x]=numeros_repetidos(10)
Elemento repetido 117
 
x1 =
 
    52    18   168   117   190    13   117    58   166    39
 
 
xx =
 
    13    18    39    52    58   117   117   166   168   190
 
 
x =
 
    13    18    39    52    58   117   166   168   190    89
 
>> [x1 xx  x]=numeros_repetidos(10)
 
x1 =
 
    79   166   136    42    64    27   135   115    34    30
 
 
xx =
 
    27    30    34    42    64    79   115   135   136   166
 
 
x =
 
    79   166   136    42    64    27   135   115    34    30




Saludos.
JOSE JEREMIAS CABALLERO
Asesor de Proyectos con Matlab
programador en matlab
Servicios de programacion matlab
[email protected]

http://matlabcaballero.blogspot.com
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

Comprobar números repetidos en un vector en MATLAB

Publicado por civecokar (2 intervenciones) el 04/04/2012 11:58:16
Muchas gracias, me has sido de gran ayuda!
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