.... and of course, an extra couple of hours monkeying around and I figure it out. Just in case anyone else has a similar issue in the future, here's the solution:
sdID = sd.start(filepath,'read');
[ndatasets,ngatts] = sd.fileInfo(sdID);
for icnt=0:(ndatasets-1)
sdsID = sd.select(sdID,icnt);
data=sd.readData(sdsID);
sd.endAccess(sdsID);
sd.close(sdID);
end