martes, 6 de mayo de 2008

El siguiente programa es un tipo function, que toma un vector fila b con números enteros y devuelve una matriz c donde la primera fila son los distintos elementos de b y la segunda fila son las veces que se repiten.

Ejemplo:

>> b=[0 0 0 1 0 2 2 9 9 9 9 1 1]
>> [c]=recontar(b)
c =
0 1 2 9
4 3 2 4

>>

Programa:
------------------------------------------------

function c=recontar(b)

%Este programa toma una matriz fila de números enteros b y devuelve una
%matriz c donde la primera fila son los elementos distintos de b ordenados
%de menor a mayor y la segunda fila son las veces que se repiten dichos
%elementos en b.


m=1;
reco=0;
b=sort(b);

%El siguiente bucle for analiza uno por uno los elementos de b, y lo anota en una matriz a junto con el número de veces que se repite.

for j=1:length(b)
for k=1:length(b)
if b(j)==b(k);
a(1,m)=b(j);
reco=reco+1;
end
end
a(2,m)=reco;
m=m+1;
reco=0;
end

...ahora tenemos una matriz a, pero aparecen datos repetidos, el siguiente bucle while va examinando la matriz a y copia a la matriz c cada dato una sola vez

j=1;
m=1;

while j$<$length(a(1,:))
if j+1==length(a(1,:))
c(1,m)=a(1,j);
c(2,m)=a(2,j);
m=m+1;

elseif a(1,j)~=a(1,j+1)
c(1,m)=a(1,j);
c(2,m)=a(2,j);
m=m+1;
end
j=j+1;
end



No hay comentarios: