メインコンテンツ

このページは機械翻訳を使用して翻訳されました。最新版の英語を参照するには、ここをクリックします。

ヒートマップオーバーレイ画像を作成する

この例では、ESP32 開発ボードからのワイヤレス ネットワーク信号強度測定を使用してヒートマップを作成する方法を示します。

ThingSpeak ™ は、画像や地図上に測定値を投影することでデータを可視化するのに役立ちます。特別なハードウェアは必要ありませんが、エリアの画像と位置の測定値が必要です。詳細については、Arduino の ESP32 を使用したワイヤレス ネットワーク信号強度を参照してください。

MATLAB® ビジュアライゼーションを作成する

[Apps] > [MATLAB Visualizations] を選択します。次に、新規 を選択し、カスタム (スターター コードなし) を選択して、作成 をクリックします。

データの収集

X 座標と Y 座標、および信号強度を別々のベクトルに保存します。ThingSpeakチャネルから信号強度のデータを読み取ることができます。CHANNEL_ID, READ_API_KEYFIELD_NUMBER を、チャネルの適切な値に置き換えます。チャネルID は、チャネルのメイン ページの上部に表示されます。API キーは、チャネルビューの API キー タブで確認できます。

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

無線信号の測定値をパーセンテージに変換します。

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

画像から読み取る

画像の寸法を保存します。画像は 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); 

モデルを作成する

既存のポイントを補間し、補間された結果でオーバーレイ イメージを塗りつぶします。次に、オーバーレイの透明度を設定します。

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;

画像とカラーバーを表示する

最後に、カラーバー付きの画像を表示します。色の制限をデータ値に応じて設定します。AlphaData を先ほど作成した透明度マトリックスに設定します。

imshow(picture,m);
hold on

h = imshow(OverlayImage);

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

Figure contains an axes object. The axes object contains 2 objects of type image.

最終結果では、信号強度が最も高い領域と最も低い領域がそれぞれ赤と青で示されます。

参考

| | | |