I cannot use interp2 function instead of griddata

56 views (last 30 days)
Serhat Sarihan
Serhat Sarihan on 6 Dec 2024 at 18:55
Commented: Matt J on 8 Dec 2024 at 15:53
I have a dynamic model as a MATLAB script that uses griddata function for interpolation. When I tried to implement the same model in Simulink, the only way I could use griddata was by using Matlab Function Block with coder.extrinsic('griddata') command inside. After that the Simulink model was working fine but when I tried generate a code from that model it was not possible due to griddata does not have the C/C++ Code Generation Capability. After some research, I figured out that I could use interp2 function as an alternative which has the extended capability of C/C++ Code Generation. However, when I tried to use it I got an error says; 'Grid arrays must have NDGRID structure.'
Here, a sample data extracted from my dynamic model is given with griddata and interp2 functions.
clear, clc;
% sample data
x = [1.1390, 1.1069, 1.0868;
0.6763, 0.5188, 0.2399;
0.8110, 0.1311, -0.5368;
1.2953, 0.7618, 0.3221;
1.1390, 1.1069, 1.0868];
y = [0, 0, 0;
0.1640, 0.4879, 0.8118;
0.0000, 0.0000, 0.0000;
-0.1640, -0.4879, -0.8118;
-0.0000, -0.0000, -0.0000];
v = [0, 0, 0;
0.1352, 0.2279, 0.6906;
0.0417, 0, 0.5807;
0, 0.1010, 0.4709;
0, 0, 0];
xq = [0.2000, 0.5950, 0.9900;
0.0000, 0.0000, 0.0000;
-0.2000, -0.5950, -0.9900;
-0.0000, -0.0000, -0.0000;
0.2000, 0.5950, 0.9900];
yq = [0, 0, 0;
0.2000, 0.5950, 0.9900;
0.0000, 0.0000, 0.0000;
-0.2000, -0.5950, -0.9900;
-0.0000, -0.0000, -0.0000];
% griddata function
vq = griddata(x,y,v,xq,yq,'cubic');
% interp2 function
Vq = interp2(x,y,v,xq,yq,'cubic');
I would like to get the same result using either interp2 function or any other function that has the C/C++ Code Generation Capability. Then I would be able to use it for code generation.
  3 Comments
Stephen23
Stephen23 on 6 Dec 2024 at 20:01
Edited: Stephen23 on 6 Dec 2024 at 20:01
"I cannot use interp2 function instead of griddata"
Correct: your data are not gridded, therefore you cannot use INTERP2.
Serhat Sarihan
Serhat Sarihan on 6 Dec 2024 at 20:50
Thank you for your responses. I will try to solve this issue by the help of those links you've shared.
Note: The code I shared is a dummy script for generating data to a sample point of my dynamic model. The original code is old and written by another person. I was trying to make use of it to create a dynamic model and made some modifications to it for that purpose. This was the part I did not understand.

Sign in to comment.

Answers (1)

Matt J
Matt J on 7 Dec 2024 at 0:20
scatteredInterpolant is supported for Code Generation as of R2024b, so if you can upgrade from R2019b, that might sove it.
  2 Comments
Serhat Sarihan
Serhat Sarihan on 7 Dec 2024 at 22:21
Thank you for this advise Matt.
After making some adjustments on my model to use scatteredInterpolant properly I should upgrade my Matlab version as you suggest.
Matt J
Matt J on 8 Dec 2024 at 15:53
You're welcome, but if this resolves your question please Accept-click the answer.

Sign in to comment.

Categories

Find more on Interpolation in Help Center and File Exchange

Products


Release

R2019b

Community Treasure Hunt

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

Start Hunting!