Esta página es para la versión anterior. La página correspondiente en inglés ha sido eliminada en la versión actual.

Aritmética de enteros

Este ejemplo muestra cómo realizar aritmética en datos enteros que representan señales e imágenes.

Cargar datos enteros de señal

Los datasets de medición de carga comprenden señales de cuatro instrumentos que utilizan 8 y 16 bits de la a a la D, lo que resulta en datos guardados como, y.int8int16uint16 El tiempo se almacena como.uint16

load integersignal  % Look at variables whos Signal1 Signal2 Signal3 Signal4 Time1
  Name            Size            Bytes  Class     Attributes    Signal1      7550x1              7550  int8                   Signal2      7550x1              7550  int8                   Signal3      7550x1             15100  int16                  Signal4      7550x1             15100  uint16                 Time1        7550x1             15100  uint16               

Trazar datos

Primero trazaremos dos de las señales para ver los rangos de señal.

plot(Time1, Signal1, Time1, Signal2); grid; legend('Signal1','Signal2');

Aquí vemos los valores para.int8 Es probable que estos valores deban ser escalado para calcular el valor físico real que la señal representa, por ejemplo, voltios.

Procesar datos

Podemos realizar aritmética estándar en enteros como,,, y.+-*/ Digamos que deseamos encontrar la suma de Signal1 y Signal2.

SumSig = Signal1 + Signal2; % Here we sum the integer signals.

Ahora vamos a trazar la señal de suma y ver dónde se Sía.

cla; plot(Time1, SumSig); hold on Saturated = (SumSig == intmin('int8')) | (SumSig == intmax('int8')); % Find where it has saturated plot(Time1(Saturated),SumSig(Saturated),'rd') grid hold off

Los marcadores muestran dónde se ha saturado la señal.

Cargar datos de imagen enteros

A continuación vamos a ver la aritmética en algunos datos de imagen.

street1 = imread('street1.jpg'); % Load image data street2 = imread('street2.jpg'); whos street1 street2
  Name           Size                Bytes  Class    Attributes    street1      480x640x3            921600  uint8                 street2      480x640x3            921600  uint8               

Aquí vemos que las imágenes son de color de 24 bits, almacenadas como tres planos de datos.uint8

Mostrar imágenes

Mostrar primera imagen.

cla; image(street1); % Display image axis equal axis off

Visualice la segunda imagen

image(street2); % Display image axis equal axis off

Escalar una imagen

Podemos escalar la imagen por una constante de doble precisión, pero mantener la imagen almacenada como números enteros. Por ejemplo,

duller = 0.5 * street2; % Scale image with a double constant but create an integer whos duller
  Name          Size                Bytes  Class    Attributes    duller      480x640x3            921600  uint8               
subplot(1,2,1); image(street2); axis off equal tight title('Original');  % Display image  subplot(1,2,2); image(duller); axis off equal tight title('Duller');    % Display image

Añada las imágenes

Podemos agregar las dos imágenes de la calle juntos y trazar el resultado fantasmal.

combined = street1 + duller; % Add |uint8| images subplot(1,1,1) cla; image(combined); % Display image title('Combined'); axis equal axis off