dpb is correct that you can't do this with a datetime ruler. But you can get what you want, at least in a static version. It won't update the ticks when panning and zooming the way a native datetime plot would, but maybe that's not important to you.
Cook up something like the data I think you have:
>> t = datetime('today'):minutes(1):(datetime('today')+caldays(31));
>> t(ismember(day(t,'dayofweek'),[1 7])) = ;
>> t(timeofday(t)<hours(9.5)) = ;
>> t(hour(t)>=16) = ;
>> x = cumsum(randn(size(t)));
Plot vs. data index. In your case, the data are regular, at one minute intervals. If that wee not true, this step would have to take the irregularity into account.
Find some "nice" tick locations, e.g. each Monday. Again, for irregular data, this would be a little more complicated.
>> t0 = dateshift(dateshift(t(1),'dayofweek','monday','next'),'start','day');
>> t1 = dateshift(dateshift(t(end),'dayofweek','monday','previous'),'start','day');
>> tickDates = t0:calweeks(1):t1;
>> tickLocs = interp1(t([1 end]),[1 length(t)],tickDates,'linear','extrap');
Set those ticks and give them labels.
>> ax = gca;
>> ax.XTick = tickLocs;
>> ax.XTickLabel = cellstr(tickDates,'dd-MMM');
>> xlim(tickLocs([1 end])+[-.05 .05]*length(t))
>> axis tight
The next thing you might ask is to put some kind of dividing lines between the missing gaps. I think you'd just need to repeat what I did for the tick locations, except at 4:00pm each day, and maybe draw vertical lines or plot a red dot or whatever at each location.