このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。
ヒートマップのオーバーレイ イメージの作成
ThingSpeak™ は、イメージやマップ上に測定値を投影することにより、データを可視化するのに役立ちます。この例では、ESP32 開発ボードによって測定されたワイヤレス ネットワークの信号強度の結果を使用して、ヒートマップの作成を説明します。特別なハードウェアは不要ですが、イメージと位置の測定が必要です。詳細については、Arduino の ESP32 によるワイヤレス ネットワークの信号強度を参照してください。
MATLAB® Analysis を作成します。[Apps]、[MATLAB Analysis] を選択します。次に、[New]、[Create] を選択して空白のテンプレートを作成します。
データを収集します。X 座標と Y 座標、および信号強度を別々のベクトルに保存します。信号強度のデータは ThingSpeak チャネルから読み取ることができます。CHANNEL_ID、READ_API_KEY、および FIELD_NUMBER をチャネルの適切な値に必ず変更してください。チャネル ID は、チャネルのメイン ページの最上部に表示されています。
% Read data from a ThingSpeak channel. 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]'; % Uncomment the next line to enter data directly instead of reading from ThingSpeak % strength = [-90 -90 -90 -90 -40 -20 -22.4 -45 -35 -41 -44 -55 -40 -75 -26]';
ワイヤレス信号の測定値をパーセンテージに変換します。
% Convert the signal strength into an estimated percentage strengthPercent = 2*(strength+100)/100;
イメージを読み取り、イメージの寸法を保存します。イメージは Web 上でホストしなければなりません。
picture = imread('https://www.mathworks.com/help/examples/optim/win64/officeassign_01.png'); [width,height,depth] = size(picture);
既存の点を内挿し、内挿結果でオーバーレイ イメージを塗りつぶすモデルを作成します。次に、オーバーレイの透明度を設定します。
F = scatteredInterpolant(Y, X, strengthPercent,'natural'); for i = 1:height-1 for j = 1:width-1 OverlayImage(i,j) = F(i,j); end end alpha = (~isnan(OverlayImage))*0.6;
イメージとカラー バーを表示します。
imshow(picture); hold on OverlayImage = imshow( OverlayImage ); % Set the color limits to be relative to the data values caxis auto colormap( OverlayImage.Parent, jet ); colorbar( OverlayImage.Parent ); % Set the AlphaData to be the transparency matrix created earlier set( OverlayImage, 'AlphaData', alpha );
最終的な結果では、信号強度が最も高い領域が赤で、最も低い領域が青で表示されます。
参考
MATLAB Analysis アプリ | MATLAB Visualizations アプリ | Arduino の ESP32 によるワイヤレス ネットワークの信号強度 | チャネル フィードの更新 | thingSpeakRead