Main Content

Esta página se ha traducido mediante traducción automática. Haga clic aquí para ver la última versión en inglés.

Crear imagen de superposición de mapa de calor

Este ejemplo muestra cómo crear un mapa de calor utilizando mediciones de intensidad de señal de red inalámbrica desde una placa de desarrollo ESP32.

ThingSpeak™ le ayuda a visualizar sus datos proyectando mediciones sobre una imagen o mapa. No necesita hardware especial, pero necesita una imagen del área y las medidas de posición. Para obtener más información, consulte Wireless Network Signal Strength with ESP32 in Arduino.

Crear una visualización MATLAB®

Seleccione Aplicaciones > Visualizaciones MATLAB. Luego seleccione Nuevo y seleccione seleccionar Personalizado (sin código de inicio) y haga clic en Crear.

Recolectar datos

Guarde las coordenadas X e Y y la intensidad de la señal en vectores separados. Puede leer los datos de intensidad de la señal de un canal ThingSpeak. Reemplace CHANNEL_ID, READ_API_KEY y FIELD_NUMBER con los valores apropiados de su canal. Puedes encontrar el ID de tu canal en la parte superior de la página principal de tu canal. Puede encontrar la clave API en la pestaña Claves API de la vista de su canal.

% Enter data by hand if data from a ThingSpeak channel is not available.
strength = [-90 -90 -90 -90 -40 -20 -22.4 -45 -35 -41 -44 -55 -40 -75 -26]';
% Read data from a ThingSpeak channel.
% Uncomment the next line to read from ThingSpeak.
% strength = thingSpeakRead(CHANNEL_ID, ReadKey',READ_API_KEY,'numPoints',15,'fields',FIELD_NUMBER');
X = [10 550 550 10 50 234 393 129 237 328 448 225 344 457 477]';
Y = [10 10 410 410 293 210 202 132 130 142 141 272 268 274 200]';

Convierta las mediciones de la señal inalámbrica en porcentajes.

strengthPercent = 2*(strength+100)/100;

Leer en la imagen

Almacene las dimensiones de la imagen. Tu imagen debe estar alojada en la web.

[I,m] = imread('https://www.mathworks.com/help/examples/thingspeak/win64/CreateHeatmapOverlayImageTSExample_02.png','png');
picture=ind2rgb(I,m); 
[height,width,depth] = size(picture); 

Crear un modelo

Interpola los puntos existentes y llena la imagen superpuesta con los resultados interpolados. Luego configure la transparencia para la superposición.

OverlayImage=[];
F = scatteredInterpolant(Y, X, strengthPercent,'linear');
for i = 1:height-1
   for j = 1:width-1
          OverlayImage(i,j) = F(i,j);
   end
end
alpha = (~isnan(OverlayImage))*0.4;

Mostrar la imagen y la barra de colores

Finalmente, muestra la imagen con la barra de colores. Establezca los límites de color para que sean relativos a los valores de los datos. Establezca AlphaData para que sea la matriz de transparencia creada anteriormente.

imshow(picture,m);
hold on

h = imshow(OverlayImage);

colormap(h.Parent, jet);
colorbar(h.Parent);
set(h,'AlphaData',alpha); 

El resultado final indica las áreas donde la intensidad de la señal es mayor y menor en rojo y azul, respectivamente.

Consulte también

| | | |