I cannot use interp2 function instead of griddata
    10 visualizaciones (últimos 30 días)
  
       Mostrar comentarios más antiguos
    
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 comentarios
  Stephen23
      
      
 el 6 de Dic. de 2024
				
      Editada: Stephen23
      
      
 el 6 de Dic. de 2024
  
			"I cannot use interp2 function instead of griddata"
Correct: your data are not gridded, therefore you cannot use INTERP2.
Select a scattered interpolant: https://www.mathworks.com/help/matlab/math/overview-of-interpolation-techniques.html
Respuestas (1)
  Matt J
      
      
 el 7 de Dic. de 2024
        scatteredInterpolant is supported for Code Generation as of R2024b, so if you can upgrade from R2019b, that might sove it.
2 comentarios
  Matt J
      
      
 el 8 de Dic. de 2024
				You're welcome, but if this resolves your question please Accept-click the answer.
Ver también
Categorías
				Más información sobre Array and Matrix Mathematics en Help Center y File Exchange.
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!



