ciclo de minimos en una matriz
Publicado por david (7 intervenciones) el 19/01/2012 16:10:28
necesito ayuda en matlab. tengo que recorrer dos vectores y hacer que el programa guarde los mínimos datos de dichos vectores no afectando el orden de su par ordenado ( i , j ).
datos:
NDVI=[ 0.2 0.2 0.4 0.4 0.6 0.6 0.7 0.7 0.8]
TS=[30 25 27 28 24 25 29 30 27]
este es mi codigo, pero cuando quiero los datos más pequeños de la matriz sin afectar a su par ordenado ( a la columna contigua), esta
( columna contigua) se me desordena.
por favor ayuda
clc
clear all
%_______________________________________________
%---------------Vectores NDVI & TS--------------
NDVI=[0.7 0.4 0.6 0.2 0.8 0.7 0.4 0.6 0.2]'; %x
TS=[30 27 25 30 27 29 28 29 25]'; %y
%_______________________________________________
%--------vectores NDVI & TS transpuestos--------
A=reshape(NDVI,1,[]);
B=reshape(TS,1,[]);
%------------
a=A';
b=B';
%_______________________________________________
%-----------------Tabla de datos----------------
Tabla_datos=[A;B];
%------------
fprintf(' NDVI TS ');
fprintf('-------------------------------- ')
fprintf('%10.2f %10.1f ',Tabla_datos);
fprintf('-------------------------------- ')
%_______________________________________________
%----------------Largo del vector---------------
L=length(a);
fprintf('El largo del vector es: %g ',L)
fprintf('_____________________________ ')
%________________________________
%-----Gráfica de dispersión------
figure
plot(NDVI, TS, '+b')
set(gca, 'XLim', [0 1], 'XTick', 0:0.2:1,...
'YLim', [0 50], 'YTick', 0:10:50);
axis square
xlabel('NDVI')
ylabel('Ts')
title('NDVI vs. Ts')
k=1;
%--------------------------------------------
%____________________________________________
%--------ORDEN DE TABLA MENOR A MAYOR--------
tt=[NDVI TS];
%------------
%---------IDENTIFICACION DE INDICES Y--------
%---------ORDENAMIENTO DE VECTOR #1----------
[x,y]=sort(tt,1);
%--------RESULTADOS DEL ORDENAMIENTO---------
resultado=[tt(y(:,1),1),tt(y(:,1),2)];
%____________________________________________
%-------------TABLA DE DATOS-----------------
r_____NDVI______TS=resultado
%_____________________________________________
[b1,m1]=unique(tt);
matrix=[b1,m1];
re=length(b1)/2
%--------- datos mas pequeños de la matriz -------
p=reshape(b1,re,2)
debiera obtener una matriz de este tipo:
NDVI TS
[ 0.2 25
0.4 27
0.6 24
0.7 29
0.8 27 ]
datos:
NDVI=[ 0.2 0.2 0.4 0.4 0.6 0.6 0.7 0.7 0.8]
TS=[30 25 27 28 24 25 29 30 27]
este es mi codigo, pero cuando quiero los datos más pequeños de la matriz sin afectar a su par ordenado ( a la columna contigua), esta
( columna contigua) se me desordena.
por favor ayuda
clc
clear all
%_______________________________________________
%---------------Vectores NDVI & TS--------------
NDVI=[0.7 0.4 0.6 0.2 0.8 0.7 0.4 0.6 0.2]'; %x
TS=[30 27 25 30 27 29 28 29 25]'; %y
%_______________________________________________
%--------vectores NDVI & TS transpuestos--------
A=reshape(NDVI,1,[]);
B=reshape(TS,1,[]);
%------------
a=A';
b=B';
%_______________________________________________
%-----------------Tabla de datos----------------
Tabla_datos=[A;B];
%------------
fprintf(' NDVI TS ');
fprintf('-------------------------------- ')
fprintf('%10.2f %10.1f ',Tabla_datos);
fprintf('-------------------------------- ')
%_______________________________________________
%----------------Largo del vector---------------
L=length(a);
fprintf('El largo del vector es: %g ',L)
fprintf('_____________________________ ')
%________________________________
%-----Gráfica de dispersión------
figure
plot(NDVI, TS, '+b')
set(gca, 'XLim', [0 1], 'XTick', 0:0.2:1,...
'YLim', [0 50], 'YTick', 0:10:50);
axis square
xlabel('NDVI')
ylabel('Ts')
title('NDVI vs. Ts')
k=1;
%--------------------------------------------
%____________________________________________
%--------ORDEN DE TABLA MENOR A MAYOR--------
tt=[NDVI TS];
%------------
%---------IDENTIFICACION DE INDICES Y--------
%---------ORDENAMIENTO DE VECTOR #1----------
[x,y]=sort(tt,1);
%--------RESULTADOS DEL ORDENAMIENTO---------
resultado=[tt(y(:,1),1),tt(y(:,1),2)];
%____________________________________________
%-------------TABLA DE DATOS-----------------
r_____NDVI______TS=resultado
%_____________________________________________
[b1,m1]=unique(tt);
matrix=[b1,m1];
re=length(b1)/2
%--------- datos mas pequeños de la matriz -------
p=reshape(b1,re,2)
debiera obtener una matriz de este tipo:
NDVI TS
[ 0.2 25
0.4 27
0.6 24
0.7 29
0.8 27 ]
Valora esta pregunta


0