I see two possible problems. Since you use the PipeTest sample, check the PipeTest.cpp file. You have to write some settings through Wire In to activate the transfer, before you can read data on Pipe Out.
If you did that, maybe you are not using the Matlab function correctly. For block reading, try something simple to start, such as a block size of 1024 and a read size of 4096. Also, if you don't initialize the pointer (pv) correctly, it might not work.
Here is a portion of my code for block reading:
readSize = 4096;
blockSize = 1024;
buf(readSize,1) = uint8(0);
pv = libpointer('uint8Ptr', buf);
[actualReadSize,~] = calllib('okFrontPanel', 'okFrontPanel_ReadFromBlockPipeOut', obj.ptr, epaddr, blocksize, readSize, pv);