This might be an approach. Quite a bit of this is pseudo code and probably needs refining to synchronize the images into correct order.
Create a data queue (q) which is sent the image from the workers and writes the image into a video object.
v = VideoWriter(filename);
q = parallel.pool.DataQueue;
afterEach(q,@(an_image)writeImageToFrame(v,an_image));
parfor fidx = 1:1500000
signal_1 = fnc1(fidx);
signal_2 = fcn2(fidx);
frame = video_obj(fidx);
% Stitch the three together into a single image
the_image = signal_1 + signal_2 + frame;
send(q, the_image)
end
function writeImageToFrame(v,an_image)
v.writeVideo(v,an_image)
end
Fill in the code above, post it (what's working, what's not) and we can refine it.