ARITMÉTICA DE ENTEROS

17 views
Skip to first unread message

アタラクシア

unread,
May 2, 2007, 4:38:15 PM5/2/07
to The MATLAB users
%% ARITMÉTICA DE ENTEROS
% Se darán aquí ejemplos de ejecución aritmética sobre datos enteros
de
% señal e imagen

%% Cargando datos de señal entera
% Cargar los conjuntos de datos que comprenden las señales medidas por
% cuatro instrumentos usando 8 y 16 bits A-to-D's dando como resultado
% datos guardados como int8, int16 y uint16. El tiempo es almacenado
como
% uint16.

load integersignal

% Observar las variables
whos Signal1 Signal2 Signal3 Signal4 Time1

%% Graficar Datos
% Primero vamos a graficar dos de las señales para observar los rangos
de
% señal

plot(Time1, Signal1, Time1, Signal2);
grid;
legend('Señal 1','Señal 2');

% Podemos ver que los valores estan en el rango -128 y 127, que es lo
que
% podríamos esperar para int8. Es probable que los valores necesiten
ser
% escalados para calcular el valor físico actual que la señal
representa en
% e.g. Volts.

%% Procesamiento de datos
% Podemos operar en aritmética con números enteros como +,-,* y /.
Digamos
% que deseamos encontrar la suma de las señales 1 y 2.
SumSig = Signal1 + Signal2; % Aquí sumamos las señales enteras.

%%
%Podemos encender las advertencias para que nos digan si la
aritmética se
%satura. En el caso de int8, esto va a ocurrir si el resultado de una
%operación esta por fuera del rango -128 a 127. Vamos a encender esas
%advertencias mediante el comando intwarning y ejecutar de nuevo

intwarning('on')
SumSig = Signal1 + Signal2; % Aqui sumamos de nuevo las señales.

%%
% Sin embargo realizando esta comprobación se ralentiza de forma
importante
% la ejecución. Es mejor activarla durante el desarrollo del algoritmo
y
% apagarla para la ejecución final. Ahora vamos a diagramar la suma de
% la señal y ver en donde se satura.

intwarning ('off')

cla;
plot(Time1, SumSig);
hold on;
Saturated = (SumSig == intmin('int8')) | (SumSig == intmax('int8')); %
% Encuentra en donde se ha saturado
plot(Time1(Saturated), SumSig(Saturated),'rd');grid;
hold off

%%
% Los marcadores muestran en donde esta señal se ha saturado.

%% Cargando Datos de Imagen Entera

% A continuación vamos a observar la aritmética sobre algunos datos de
% imagen.

street1=imread('street1.jpg'); % Carga el dato de imagen
street2=imread('street2.jpg');
whos street1 street2
%%
% En donde vemos que las imágenes son a color de 24 bitsalmacenadas
como
% tres daros planos de uint8.

%% Desplegando las Imágenes
% Desplegar la primera imagen

cla;
image(street1); % Despliega la imagen
axis equal; axis off
%%
% Desplegar la segunda imagen
image(street2); % Despliega la imagen
axis equal; axis off

%% Escalar una Imagen
% Podemos escalar la imagen mediante una constante de precisión doble
pero
% manteniendo la imagen almacenada como interos. Por ejemplo,

Opacado = 0.5 * street2; % Escala la imagen con una contante doble
pero cres un entero
whos Opacado

%%
subplot(1,2,1);
image(street2);
axis off equal tight
title('Original'); % Despliega la imagen

subplot(1,2,2);
image(Opacado);
axis off equal tight
title('Opacado') % Despliega la imagen

%% Agregar la Imágenes

% Podemos agregar las dos imágenes de la calle juntas y diagramar el
% resultado fantasmal

Combinado = street1 + Opacado; % Agrega las imágenes uint8
subplot(1,1,1)
cla;
image(Combinado); % Despliega la imagen
title('Combinado');
axis equal; axis off

%%________________Translation by Ataraxiainc

Reply all
Reply to author
Forward
0 new messages