MatlabでSim​ulinkのルックア​ップテーブルと同じ機​能が使いたい

Simulinkにルックアップテーブルという機能がありますが、Matlabにも同じような機能ってありますか?
例えば下記のようなテーブルを変数に用意用意します。
■やりたいこと
このとき、引数にX=775,Y=5を指定すると-4を返す
ただし、間の値を指定した場合は内挿したいです。
例えばX=2350 Y=5のときは21を返す
上記の機能はSimulinkであればルックアップテーブルブロックで簡単にできることですが、Matlabにも同じような機能ってありますか?

 Accepted Answer

interp2がそれに近しいかと思います。
まずは適当なデータを揃えます
このとき、xとyはmeshgridでグリッドにする必要があります。
x = -2:.2:1.2;
y = -2:.05:1.5;
[X,Y] = meshgrid(x,y);
V = peaks(X,Y);
可視化してみましょう
figure
surf(X,Y,V)
さてここで ( x, y ) = ( 0.1, 0.3 ) の数字を線形補間で取り出してみましょう
Vp = interp2(X,Y,V,0.1,0.2)
Vp = 0.3324
可視化もしてみましょうか
figure
surf(X,Y,V,'FaceAlpha',0.4,'EdgeAlpha',0.2)
hold on
scatter3(0.1,0.2,Vp,30,'r','filled')

3 Comments

> xとyはmeshgridでグリッドにする必要があります。
interp2のX,Yは、単調増加(減少)のベクトル形式にも対応していますので、補足します。
% 質問者様の表の一部抜粋
X = [775,2300,2400]; % 横軸
Y = [5,40]; % 縦軸
V = [-4,20,22;70,15,11] % 上記 X、Y軸に対応する各値
V = 2×3
-4 20 22 70 15 11
% x = 775, y = 5の時
interp2(X,Y,V,775,5)
ans = -4
% x = 2350, y = 5の時
interp2(X,Y,V,2350,5)
ans = 21
Hernia Baby
Hernia Baby on 27 Aug 2022
補足ありがとうございます!図示するためのグリッド化でしたね。なので、今回いただいた補足がやりたい事の回答になります。
SHromaneko
SHromaneko on 29 Aug 2022
お二方
大変ありがとうございました。
意図通りのことができました。

Sign in to comment.

More Answers (0)

Products

Release

R2022a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!