Está en la página 1de 5

UNIVERSIDAD DE GUADALAJARA

CENTRO UNIVERSITARIO DE LOS VALLES

Rotación de datos

MARCOS FLORES HERNÁNDEZ

NOVIEMBRE 2017
Código en matlab aplicando rotación de datos
clear all %limpia consola
clc %limpia pantalla

load('rotacion'); %Carga los datos


load('BATITOPO.dat'); %Carga los datos

x1=BATITOPO(:,1) %primer columna de BATITOPO


y1=BATITOPO(:,2) %segunda columna de BATITOPO
dato1=BATITOPO(:,3) %tercer columna de BATITOPO

%%%%apartado 1 (en este se realiza la grafica de los datos originales)


%Interpolación de los datos originales y gráfica.
xmin = min(x); %Mínimo en x original.
xmax = max(x); %Máximo en x original.
ymin = min(y); %Mínimo en y original.
ymax = max(y); %Máximo en y original.
XI = linspace(xmin,xmax,300);
YI = linspace(ymin,ymax,300);
[X,Y] = meshgrid(XI,YI);

V = griddata(x,y,dato,X,Y);
pcolor(X , Y, V)
hold on
shading interp
colorbar
colormap jet
xlabel('NORTE (km)')
ylabel('ESTE (km)')
title('Datos sin rotación')

%Gráfica de la longitud y la latitud del archivo datos.


plot(x,y,'.k'); %%%grafica de los datos
hold on

%inicio para reducir el numero de datos de BATITOPO


i=find(dato1>-1); %Toma todos los datos que son mayores que -1 de la
tercer columna y guarda sus posiciones

length(i) %Lee el número de datos que contiene i

x2=x1(i); %Toma los datos en la posición i de la primer columna


y2=y1(i); %Toma los datos en la posición i de la segunda columna
en

B=dato1(i); %Toma los valores en la posición i de la columna 3

j=find(B<1); %Toma todos los datos que son menores que 1 en


la posición i de la tercer columna y guarda sus posiciones

length(j) %Lee el numero de datos


C=B(j); %Guarda los datos que son mayores que -1 y
menores que 1 de la tercer columna

x3=x2(j); %Guarda los datos que estan es las posiciones j


de la primer columna
y3=y2(j); %Guarda los datos que estan es las posiciones j
de la segunda columna

plot(x3,y3,'.') %Grafica los datos reducidos


hold on
length(C)

%%%%apartado 2 (se realializa la rotación de los datos originales del


probelma)
%%%rotación
grados=20;

x=cosd(grados).*x-sind(grados).*y
y=sind(grados).*x+cosd(grados).*y

xmin=min(x)
xmax=max(x)
ymin=min(y)
ymax=max(y)
X=linspace(xmin,xmax,300)
Y=linspace(ymin,ymax,300)
[X,Y]=meshgrid(X,Y)

% plot(x3,y3,'.b')
% hold on
% plot(x,y,'.r')
% hold on

V=griddata(x,y,dato,X,Y)
figure(2)
pcolor(X,Y,V)
hold on
shading interp
colorbar
colormap jet
xlabel('NORTE (km)')
ylabel('ESTE (km)')
title('Datos con rotación')

figure(2)
plot(x,y,'.k');
hold on

x3=cosd(grados).*x3-sind(grados).*y3
y3=sind(grados).*x3+cosd(grados).*y3

figure(2)
plot(x3,y3,'.b')
hold on
El código anteriormente mostrado nos ayuda a rotar los datos de un conjunto para lograr un 
ajuste adecuado de los mismos. A continuación se muestra la gráfica de los datos originales que 
están dados por el problema. 

En esta gráfica podemos ver la interpolación de datos así


como los elementos de barimetría y topografía, también vemos
como el conjunto de datos proporcionados los cuales se
representan con la escala de colores (aunque no teneos
información de que tipo de datos son o que información
contienen).
A continuación mostramos la gráfica de los datos con una
rotación de 20 grados, los cuales se pueden rotar más
dependiendo del ajuste que cada persona desea para su
problema.
Este código basa la rotación en la implementación de una
matriz de rotación para poder realizar el movimiento de los
datos conservando sus propiedades

También podría gustarte