I ended up using scatteredinterpolant to do each "slice" of my temperature data. Then combined after the fact.
maybe there are more efficient ways but this worked for me.
VQT = zeros(N_r*N_theta, N_r*N_theta, N_z);
for z = 1:1:N_z
xar = zeros(N_r*N_theta, 1);
yar = zeros(N_r*N_theta, 1);
var = zeros(N_r*N_theta, 1);
tempx = linspace(-R,R,N_r*N_theta);
tempy = linspace(-R,R,N_r*N_theta);
[cartx,carty] = meshgrid(tempx,tempy);
i = 1;
for r = 1:1:N_r
for theta = 1:1:N_theta
x = (R-(r-1)*(R/N_r)) * cos((theta-1) * (2*pi/N_theta));
y = (R-(r-1)*(R/N_r)) * sin((theta-1) * (2*pi/N_theta));
%plot(x,y, Marker=".", MarkerSize=10, MarkerEdgeColor="blue")
%hold on
xar(i) = x;
yar(i) = y;
var(i) = Dat(r, theta, z);
i = i+1;
end
end
F = scatteredInterpolant(xar, yar, var);
F.Method = 'nearest';
Vq = F(cartx,carty);
VQT(:, :, z) = Vq;
end