# How to create a 2D lookUp table in matlab

246 views (last 30 days)
Nadia A on 2 Aug 2016
Commented: Walter Roberson on 8 Sep 2017
I want to create a 2D look Up table from 3 arrays
x1= 0:0.1:1 %axis values --> length is 11
x2= 25:2:35 %axis values --> length is 6
y= 0.01:0.001:0.06 % output data --> length is 51, rest of the 15 elements are zeros
I want to create an LUT which has 6 rows and 11 columns. Whenever I need to retrieve y, if exact query points of x1 and x2 is not present, then the function should give an interpolated value. I want to generate a .m script for this without using Simulink.
Thanks
##### 2 CommentsShowHide 1 older comment
Nadia A on 2 Aug 2016
Sorry, rest of the values is assigned as 0.I have edited my original post.
Thanks

Stephen Cobeldick on 2 Aug 2016
You could use interp2 or interpn:
>> x1 = 0:0.1:1;
>> x2 = 25:2:35;
>> y = 0.01:0.001:0.06;
>> vm = zeros(numel(x1),numel(x2));
>> vm(1:numel(y)) = y;
>> interpn(x1,x2,vm,0,25)
ans = 0.010000
Note that this allocates the values of y row-wise into mat. If you want them to be allocated column-wise then transpose mat before and after the allocation.
Walter Roberson on 8 Sep 2017
You need a scattered interpolant for that case. You should expect that off-diagonal might look fairly different than you imagine, as interpolation will come to depend upon which triangle happens to be closest in 3 space.

Satishkumar Aruljothi on 2 Aug 2016
Edited: Satishkumar Aruljothi on 2 Aug 2016
Use 2-D looup table from simulink library.
see the attached image.
Nadia A on 2 Aug 2016
Hi SatishKumar, Is there any matlab function for this? I need to implement this same functionality in .m script without using Simulink.
Thanks