Main Content

Diese Seite wurde mithilfe maschineller Übersetzung übersetzt. Klicken Sie hier, um die neueste Version auf Englisch zu sehen.

Erstellen Sie ein Heatmap-Overlay-Bild

Dieses Beispiel zeigt, wie Sie eine Heatmap mithilfe von Messungen der Signalstärke eines drahtlosen Netzwerks von einem ESP32-Entwicklungsboard erstellen.

ThingSpeak™ hilft Ihnen, Ihre Daten zu visualisieren, indem es Messungen über ein Bild oder eine Karte projiziert. Sie benötigen keine spezielle Hardware, benötigen aber ein Bild der Flächen- und Positionsmessungen. Weitere Informationen finden Sie Wireless Network Signal Strength with ESP32 in Arduino.

Erstellen Sie eine MATLAB® Visualisierung

Wählen Sie „Apps“ „>“ „MATLAB Visualisierungen“. Wählen Sie dann „Neu“ und wählen Sie „Benutzerdefiniert (kein Startercode)“ und klicken Sie auf „Erstellen“.

Daten sammeln

Speichern Sie die X- und Y-Koordinaten sowie die Signalstärke in separaten Vektoren. Sie können die Daten zur Signalstärke von einem ThingSpeak Kanal lesen. Ersetzen Sie CHANNEL_ID, READ_API_KEY und FIELD_NUMBER durch die entsprechenden Werte aus Ihrem Kanal. Du findest deine Kanal-ID oben auf der Hauptseite deines Kanals. Den API-Schlüssel finden Sie auf der Registerkarte „API-Schlüssel“ Ihrer Kanalansicht.

% 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]';

Wandeln Sie die Messwerte des Funksignals in Prozent um.

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

Lesen Sie das Bild ein

Speichern Sie die Abmessungen des Bildes. Ihr Bild muss im Internet gehostet werden.

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

Erstellen Sie ein Modell

Interpolieren Sie die vorhandenen Punkte und füllen Sie das Overlay-Bild mit den interpolierten Ergebnissen. Stellen Sie dann die Transparenz für das Overlay ein.

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;

Zeigen Sie das Bild und die Farbleiste an

Zeigen Sie abschließend das Bild mit dem Farbbalken an. Legen Sie die Farbgrenzen relativ zu den Datenwerten fest. Legen Sie AlphaData als die zuvor erstellte Transparenzmatrix fest.

imshow(picture,m);
hold on

h = imshow(OverlayImage);

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

Das Endergebnis zeigt in Rot bzw. Blau die Bereiche an, in denen die Signalstärke am höchsten und am niedrigsten ist.

Siehe auch

| | | |