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

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

 채택된 답변

Hernia Baby
Hernia Baby 2022년 8월 27일

1 개 추천

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

> 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 2022년 8월 27일
補足ありがとうございます!図示するためのグリッド化でしたね。なので、今回いただいた補足がやりたい事の回答になります。
SHromaneko
SHromaneko 2022년 8월 29일
お二方
大変ありがとうございました。
意図通りのことができました。

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

제품

릴리스

R2022a

질문:

2022년 8월 26일

댓글:

2022년 8월 29일

Community Treasure Hunt

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

Start Hunting!