Just a suggstion how about using "scatteredInterpolant". You can read more about it here https://in.mathworks.com/help/matlab/ref/scatteredinterpolant.html
You can first, “vectorize” your data. For example, if for each temperature (x) and corresponding voltage (y) you have 100 time points (z), you can reshape your data into a list of points. Then, build a scattered interpolant using the available (x,y,z) points.
When you query at a new (x,y) (for example, x = 60 and y = 5) the interpolant will perform an interpolation (or even extrapolation if needed) based on your chosen method (like ‘linear’). This way the (x = 60, y = 5) point although “missing” in your original grid is indirectly accounted for by how it relates to its neighbors.
% Example data
x = [10, 30, 40, 50, 60];
y = [10, 10, 10, 10, 5];
z = [linspace(1,100,100);
linspace(1,100,100);
linspace(1,100,100);
linspace(1,100,100);
linspace(1,100,100)];
% Suppose you wish to build an interpolant for a particular time index, say t = 50.
% Alternatively, if you have many time points, you might want to process each time step.
% Here, we choose one value from each row (e.g., column 50).
zVal = z(:,50); % sensor reading at time 50 for each (x,y)
% Now, create a scattered interpolant using the available (x,y) points.
F = scatteredInterpolant(x(:), y(:), zVal(:), 'linear');
% 'linear' extrapolation are chosen here (you can change these options)
% Query the interpolant at the desired point (e.g., x=60, y=5)
query_x = 60;
query_y = 5;
z_query = F(query_x, query_y)
% z_query will be an extrapolated estimate at (60,5)
disp(z_query);
Karan